Django框架之:request对象方法

Django框架之:request对象方法

准备工作:

登陆页面:

点击查看代码
<body>
<h1 class='text-center'>登录</h1>
<div class="container">
    <div class="col-md-8 col-md-offset-2">
        <form action="">
            <p>username:
                <input type="text" name="username" class="form-control">
            </p>
            <p>password:
                <input type="password" name="password" class="form-control">
            </p>
            <input type="submit" class="btn btn-block btn-success">
        </form>
    </div>
</div>
</body>

urls.py

点击查看代码
from app01 import views
urlpatterns = [
    url(r'^admin/', admin.site.urls),
    # 登录功能
    url(r'^login/',views.login),
]

views.py

点击查看代码
def login(request):
        return render(request,'login.html')

启动:

# 启动Django项目后提交数据,我们发现是提交的方式为get请求

form表单补充:

"""
form表单action参数
	1.不写 默认朝当前所在的url提交数据
	2.全写 指名道姓
	3.只写后缀 /login/
"""
# method属性:指认提交方式:
	form表单默认是get请求数据
	http://127.0.0.1:8000/login/?username=gary&password=123123
# 我们在提交数据的时候要将method参数改为post,使其发送post请求,使得数据安全。
<form action="" method='post'>:
    ...
</form>

# 在前期我们使用django提交post请求的时候 需要取配置文件中注释掉一行代码
MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    # 'django.middleware.csrf.CsrfViewMiddleware',   # 注释掉这一行
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

那么后端怎么判断当前是get请求还是post请求:这里就要用到request对象方法

request对象方法初始

# 获取当前请求方式
print(request.method)  # 返回请求方式并且返回结果是全大写的字符串形式

# 这样我们就可以基于不同的请求返回不同的页面处理不同的逻辑
def login(request):
    if request.method == 'POST':
        return HttpResponse('收到了POST')   # 如果是POST请求就返回这个
    return render(request,'login.html')   # 如果不是就返回这个

POST请求方法

print(request.POST)  # 获取用户提交的post请求数据(不包含文件)  返回是一个字典
print(request.POST.get('username'))    # 拿到post请求username键对应的值
print(request.POST.getlist('username'))   # 返回为列表的形式
print(request.POST.get('hobby'))   # 如果为多个数据则返回列表的最后一个
print(request.POST.getlist('hobby'))   # 拿到整体的列表

GET请求方法

# 首先:将form表单的method属性属性值改为get请求方便测试

request.GET  # 获取用户提交的get请求数据   结果也是字典套列表的形式
request.GET.get('username')  # 只获取对应键的列表最后一个元素
request.GET.getlist('hobby')  # 直接将整个列表取出

# 我们可以看到get与post请求的request对象得用法和返回结果完全是一样的 那么他们到底有什么区别呢

区别就在于:get请求携带的数据是有大小限制的 大概只有4KB左右(相当于?号后面携带的参数并不是无限制的),而post请求则没有限制
posted @ 2022-02-28 15:37  JasonBorn  阅读(131)  评论(0编辑  收藏  举报