Django框架入门之request对象
【一】request对象属性和方法
【1】request.method
- 获取发起请求的请求方式
- get请求携带的数据是由大小限制的
- post请求携带的请求参数没有限制
【2】request.POST
- 获取用户输入的请求数据,但不包含文件
- 返回的是:大写字符串
【3】get/getlist
get
只会获取列表最后一个元素getlist
直接将列表取出(多选项)
【二】注册案例
【1】提交GET请求
(1)前端
- form表单中action属性,不写默认是当前路由地址
- form表单中的method属性,不写默认是GET请求
(2)后端
- app01/views.py
from django.shortcuts import render
def register(request):
return render(request, 'register.html')
- urls
from django.contrib import admin
from django.urls import path
from app01 import views
urlpatterns = [
path('admin/', admin.site.urls),
path("register/", views.register)
]
- 前端路由地址访问
【2】提交POST请求
(1)前端
{% load static %}
<html lang="en">
<head>
<meta charset="UTF-8">
<title>注册页面</title>
<script src="{% static 'js/bootstrap.min.js' %}"></script>
<script src="{% static 'js/jquery.min.js' %}"></script>
<link rel="stylesheet" href="{% static 'css/bootstrap.min.css' %}">
</head>
<body>
<div class="container-fluid">
<div class="row">
<div class="col-md-4 col-md-offset-4">
<h1 class="text-center">注册页面</h1>
<form action="" method="get">
<div>username:<input type="text" class="form-control" name="username"></div>
<div>password:<input type="text" class="form-control" name="password"></div>
<div>hobby:
<input type="checkbox" name="hobby" value="music">音乐<span></span>
<input type="checkbox" name="hobby" value="art">美术<span></span>
<input type="checkbox" name="hobby" value="sing">唱歌</div>
<div><input type="submit" class="btn btn-success" id="btn_submit"></div>
</form>
</div>
</div>
</div>
</body>
</html>
(2)后端两种方式
- get请求和post请求
from django.shortcuts import render,HttpResponse,redirect
def register(request):
print(request.method)
if request.method == 'GET':
data=request.GET
print(data) #<QueryDict: {'username': ['hope'], 'password': ['123'], 'hobby': ['music', 'art']}>
username=data.get('username')
password=data.get('password')
hobby=data.getlist('hobby')
print(username)
print(password)
print(hobby)
elif request.method == 'GET':
data = request.POST
print(data) # <QueryDict: {'username': ['hope'], 'password': ['123'], 'hobby': ['music', 'art']}>
username = data.get('username')
password = data.get('password')
hobby = data.getlist('hobby')
print(username)
print(password)
print(hobby)
return render(request,'index.html')
#GET
#<QueryDict: {'username': ['hope'], 'password': ['123'], 'hobby': ['music', #'art', 'sing']}>
#hope
#123
#['music', 'art', 'sing']
(3)POST请求报错解决办法
-
当前端form表单发送POST请求时,会报一个错,导致后端崩溃
-
将settings.py文件中的配置注释掉,在后面的学习中我们会逐步的解决掉这个问题
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',
]