Django框架入门之request对象
741 字
4 分钟
Django框架入门之request对象
- 1纯手撸Web框架
- 2Python框架初识
- 3Django框架初识
- 4Django框架安装
- 5Django框架入门之小白必会三板斧
- 6Django便捷函数shortcuts
- 7Django框架入门之静态文件
- 8Django的静态文件
- 9Django框架入门之request对象本文
- 10Django框架入门之ORM操作
- 11Django框架之生命周期流程图
- 12Django框架之路由层
- 13Django框架之视图层
- 14Django框架之模板层
- 15Django框架之模型层
- 16图书管理系统
- 17Ajax基础操作
- 18Ajax进阶操作
- 19JS确认插件补充
- 20Django框架之序列化组件serializers
- 21Django框架之批量插入数据
- 22Django框架补充之分页器推导
- 23Django框架之Form组件
- 24Django框架Form组件之常用字段及插件
- 25Django框架Form组件之渲染HTML代码
- 26Django框架Form组件之渲染错误信息
- 27Django框架Form组件之钩子函数(Hook)
- 28Django框架Form组件之源码
- 29Django框架Form组件之模型表单ModelForm
- 30Django表单API详解
- 31Django框架之Cookie和Session
- 32Django框架之会话session补充
- 33Django框架之CBV添加装饰器的三种方式
- 34Django框架之中间件引入
- 35Django框架之中间件思想
- 36Django框架之csrf跨站请求
- 37Django框架之auth模块
- 38Django框架之settings源码
- 39Django框架之settings配置
- 40Django框架之settings核心配置项
- 41RBAC权限系统
- 42前端基础之URL编码
【一】request对象引入
【1】提交GET请求
(1)前端
- form表单中action属性,不写默认是当前路由地址
- form表单中的method属性,不写默认是GET请求
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title></head><body><form action="" method="get"> <p>username : <input type="text" name="username"></p> <p>password : <input type="password" name="password"></p> <p><input type="submit"></p></form></body></html>(2)后端
- app01/views.py
from django.shortcuts import render
def register(request):
return render(request, 'register.html')- urls
from django.contrib import adminfrom django.urls import pathfrom app01 import views
urlpatterns = [ path('admin/', admin.site.urls), path("register/", views.register)]- 前端路由地址访问
【2】提交POST请求
(1)前端
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title></head><body><form action="" method="post"> <p>username : <input type="text" name="username"></p> <p>password : <input type="password" name="password"></p> <p><input type="submit"></p></form></body></html>(2)后端
from django.shortcuts import render
def register(request):
return render(request, 'register.html')(3)POST请求报错
- 当前端form表单发送POST请求时,会报一个错,导致后端崩溃
Forbidden (403)CSRF verification failed. Request aborted.
You are seeing this message because this site requires a CSRF cookie when submitting forms. This cookie is required for security reasons, to ensure that your browser is not being hijacked by third parties.
If you have configured your browser to disable cookies, please re-enable them, at least for this site, or for “same-origin” requests.(4)解决办法
- 将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',]【二】request对象属性和方法
【1】request.method
- 获取发起请求的请求方式
- get请求携带的数据是由大小限制的
- post请求携带的请求参数没有限制
【2】request.POST
- 获取用户输入的请求数据,但不包含文件
- 返回的是:大写字符串
【3】get/getlist
- get 只会获取列表最后一个元素
- getlist 直接将列表取出(多选项)
【4】示例
(1)前端
- register.html
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title></head><body><form action="" method="post"> <p> username : <input type="text" name="username"> </p> <p> password : <input type="password" name="password"> </p> <p> hobby : music <input type="checkbox" name="hobby" value="music"> sport <input type="checkbox" name="hobby" value="sport"> dance <input type="checkbox" name="hobby" value="dance"> </p> <p><input type="submit"></p></form></body></html>- login.html
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title></head><body>
<form action=""> <p> username : <input type="text" name="username"> </p> <p> password : <input type="password" name="password"> </p> <p><input type="submit"></p></form></body></html>(2)后端
- app01/views.py
from django.shortcuts import render, HttpResponse, redirect
def register(request): # 【一】如果是正常访问页面,发送的请求是 GET 请求 print(request.method) # GET # 【二】如果是通过表单提交数据,发送的请求是 POST 请求 if request.method == 'POST': print(request.method) # POST # 【三】从POST请求中获取到用户输入的参数 data = request.POST print(data) # <QueryDict: {'username': ['dream'], 'password': ['1314521'], 'hobby': ['sport', 'dance']}> # 【四】从POST请求中提取出参数 username = data.get('username') password = data.get('password') hobby = data.get('hobby') print(username) # dream print(password, hobby) # 1314521 print(hobby) # ['sport', 'dance'] return redirect(to='/login/') # 发送GET请求,则渲染注册页面 return render(request, 'register.html')
def login(request): # 【一】获取到当前请求方式 print(request.method) # 【二】获取到当前GET请求携带的参数 data = request.GET print(data) # <QueryDict: {'username': ['dream'], 'password': ['521']}> if data: username = data.get("username") password = data.get("password") if username == "dream" and password == "1314521": return HttpResponse("登录成功") else: return HttpResponse("用户名或密码失败") return render(request, 'login.html')- urls.py
from django.contrib import adminfrom django.urls import pathfrom app01 import views
urlpatterns = [ path('admin/', admin.site.urls), path("register/", views.register), path("login/", views.login)]支持与分享
如果这篇文章对你有帮助,欢迎分享给更多人或打赏支持!
相关文章智能推荐
1
C 语言发展史
编程语言了解 C 语言从 BCPL、B 语言到现代标准 C 的发展历程、核心特点与应用领域。
2
C 语言开发环境的安装与配置
编程语言在 Windows、Linux 与 macOS 上安装 C 工具链,配置编辑器,并编译运行第一个 C 程序。
3
C 语言初识:程序运行机制与基本结构
编程语言认识 C 程序从源代码到运行的完整流程,以及基础语法和程序的基本结构。
4
C 语言基础:注释、关键字、变量与数据类型
编程语言学习 C 语言的注释、关键字、标识符、常量、变量和基本数据类型等基础知识。
5
C 语言数据类型
编程语言理解 C 语言的数据类型体系,包括基本类型、整数类型、浮点类型和逻辑类型。
随机文章随机推荐














