Django 的 GET 请求和 POST 请求及其响应处理
1.请求中的方法
方法 | 说明 |
---|---|
GET | 是指定页面的信息和请求的正文。 |
HEAD | 与GET请求类似,只不过返回的响应中没有具体内容来获取header。 |
发布 | 将数据提交到指定资源以处理请求(例如:提交表单或上传文件)。数据包含在查询正文中。 PoST 请求可能导致创建新资源和/或修改现有资源。 |
PUT | 从客户端传输到服务器的数据会替换给定文档的内容。 |
DELETE | 请求服务器删除指定页面。 |
CONNECT | HTTP/1.1 协议保留了一个代理服务器,可以更改与进程方法的连接。 |
选项 | 允许客户端查看服务器性能。 |
TRACE | 回显从服务器收到的请求,主要用于测试或连接。 |
2。 Django中的请求
方法 | 描述 | |
---|---|---|
path_info | URL字符串 | |
方法 方法 | ,G中的P dic值:String' GET | QueryDict 查询字典对象,包括来自 get 请求方法的所有数据。 |
POST | QueryDict 查询字典对象,包含 post 请求方法中的所有数据。 | |
FILES | 包含所有上传文件信息的类似字典的对象。 | |
COOKIES | Python 字典,包含所有 cookie、键和值作为字符串。 | |
session | 表示当前会话的类似字典的对象。† sted 完整路径 | |
request.META | 请求中的元数据(消息头),-request.META['REMOTE_ADDR']:客户端 IP 地址 |
3. 响应状态代码 以下通用状态代码: - 200 - 请求成功
- 301 - 永久重定向 - 资源(网页等)永久转移到另一个URL
- 302 - 临时重定向 -b 请求资源的页面 404 等) ) 不存在
- 500 - 内部服务器错误
IV. Django 中的响应对象
构造函数格式:
HttpResponse(content=响应正文,content_type=响应正文数据类型,status=状态代码)
对浏览器的响应响应正文内容参数:
- 内容:表示返回的内容。
- ststus_code:返回的HTTP响应状态代码(默认200)。
- content_type:指定返回数据的MIME类型(默认“text/html”)。浏览器根据该属性显示数据。如果是text/html,则解析该字符串。如果是text/plain,则显示纯文本。
常用的内容类型有:
- 'text/html':默认html文件
- 'text/plain':纯文本
- 'text/css'‶text/javascript':js文件
- 'multipart/form-data':提交文件
- 'application/json':json 传输
- 'application/xml':xml 文件 ♶pclass Type
Action Status代码 HttpResponseRedirect 重定向 302 HttpResponse 302 HttpResponse❙❓未修改 HttpRespon seBadRequest 错误请求 400 HttpResponseNotFound 没有合适的资源 404 HttpResponseForbidden A请求被拒绝 403 HttpResponseServerError 服务器错误 500 5. GET 请求示例测试♽视图并使用 Djanpy 创建 mysite Phon。如下: 
urls.py 文件代码:
from django.contrib import admin
from django.urls import path, re_path
from . import views
urlpatterns = [
path('admin/', admin.site.urls),
# http://127.0.0.1:8000/test_request
path('test_request/', views.test_request),
]
views.py 文件代码:
from django.http import HttpResponse
def test_request(request):
print('path info is : ', request.path_info)
print('method is : ', request.method)
print('querystring is : ', request.GET)
print('full path is :', request.get_full_path())
print('客户端IP is :', request.META['REMOTE_ADDR'])
return HttpResponse('test request ok')
编译运行后,在浏览器地址栏输入: http://127.0.0/1?m :8re_0.0/1? 1&n=2
效果为:


6。 GET处理和POST处理
定义:
无论是GET还是POST,请求都是通过视图函数接收的,通过request.method的评估来区分具体的请求操作。

GET处理:
GET请求操作,通常用于从服务器获取数据。
可以生成 GET 请求的场景:

POST 处理:
POST 请求操作,通常用于向服务器发送大型/私有数据。
客户端通过POST请求向服务器传输数据,例如表单。
服务器收到参数后,通过request.method判断是否是POST请求。


7。 GET处理和POST处理示例测试
urls.py文件代码:
from django.contrib import admin
from django.urls import path, re_path
from . import views
urlpatterns = [
path('admin/', admin.site.urls),
# http://127.0.0.1:8000/main_page
path('main_page/', views.main_page),
# http://127.0.0.1:8000/test_get_post
path('test_get_post/', views.test_get_post),
]
views.py文件代码:
from django.http import HttpResponse, HttpResponseRedirect
POST_FORM = '''
<form method='post' action='/test_get_post/'>
用户名:<input type='text' name='uname'>
<input type='submit' value='提交'>
</form>
'''
def main_page(request):
html = """
<h4>这是我的网站首页</h4>
<a href="http://www.datutusuibi.com/" target="_blank">大土土随笔</a>
"""
return HttpResponse(html)
def test_get_post(request):
if request.method == 'GET':
print(request.GET)
print(request.GET['m'])
print(request.GET.getlist('m'))
print(request.GET.get('t', 'no t'))
return HttpResponse(POST_FORM)
elif request.method == 'POST':
# 处理用户提交数据
print('uname is : ', request.POST['uname'])
return HttpResponseRedirect('/main_page/')
else:
pass
return HttpResponse('test get post ok')
如果使用POST接收客户端数据,需要清除csrf检查。
编译运行后,在浏览器地址栏输入:http://127.0.0.1:8000/test_get_post/?m=1&n=2&m=3以下。输入用户名,点击“提交”,
效果为:


参数:
- 内容:表示返回的内容。
- ststus_code:返回的HTTP响应状态代码(默认200)。
- content_type:指定返回数据的MIME类型(默认“text/html”)。浏览器根据该属性显示数据。如果是text/html,则解析该字符串。如果是text/plain,则显示纯文本。
常用的内容类型有:
- 'text/html':默认html文件
- 'text/plain':纯文本
- 'text/css'‶text/javascript':js文件
- 'multipart/form-data':提交文件
- 'application/json':json 传输
- 'application/xml':xml 文件 ♶pclass Type
Action Status代码 HttpResponseRedirect 重定向 302 HttpResponse 302 HttpResponse❙❓未修改 HttpRespon seBadRequest 错误请求 400 HttpResponseNotFound 没有合适的资源 404 HttpResponseForbidden A请求被拒绝 403 HttpResponseServerError 服务器错误 500 5. GET 请求示例测试♽视图并使用 Djanpy 创建 mysite Phon。如下:
urls.py 文件代码:
from django.contrib import admin from django.urls import path, re_path from . import views urlpatterns = [ path('admin/', admin.site.urls), # http://127.0.0.1:8000/test_request path('test_request/', views.test_request), ]
views.py 文件代码:
from django.http import HttpResponse def test_request(request): print('path info is : ', request.path_info) print('method is : ', request.method) print('querystring is : ', request.GET) print('full path is :', request.get_full_path()) print('客户端IP is :', request.META['REMOTE_ADDR']) return HttpResponse('test request ok')
编译运行后,在浏览器地址栏输入:
http://127.0.0/1?m :8re_0.0/1? 1&n=2
效果为:6。 GET处理和POST处理
定义:
无论是GET还是POST,请求都是通过视图函数接收的,通过request.method的评估来区分具体的请求操作。
GET处理:
GET请求操作,通常用于从服务器获取数据。
可以生成 GET 请求的场景:
POST 处理:
POST 请求操作,通常用于向服务器发送大型/私有数据。
客户端通过POST请求向服务器传输数据,例如表单。
服务器收到参数后,通过request.method判断是否是POST请求。
7。 GET处理和POST处理示例测试
urls.py文件代码:
from django.contrib import admin from django.urls import path, re_path from . import views urlpatterns = [ path('admin/', admin.site.urls), # http://127.0.0.1:8000/main_page path('main_page/', views.main_page), # http://127.0.0.1:8000/test_get_post path('test_get_post/', views.test_get_post), ]
views.py文件代码:
from django.http import HttpResponse, HttpResponseRedirect POST_FORM = ''' <form method='post' action='/test_get_post/'> 用户名:<input type='text' name='uname'> <input type='submit' value='提交'> </form> ''' def main_page(request): html = """ <h4>这是我的网站首页</h4> <a href="http://www.datutusuibi.com/" target="_blank">大土土随笔</a> """ return HttpResponse(html) def test_get_post(request): if request.method == 'GET': print(request.GET) print(request.GET['m']) print(request.GET.getlist('m')) print(request.GET.get('t', 'no t')) return HttpResponse(POST_FORM) elif request.method == 'POST': # 处理用户提交数据 print('uname is : ', request.POST['uname']) return HttpResponseRedirect('/main_page/') else: pass return HttpResponse('test get post ok')
如果使用POST接收客户端数据,需要清除csrf检查。
编译运行后,在浏览器地址栏输入:
http://127.0.0.1:8000/test_get_post/?m=1&n=2&m=3以下。输入用户名,点击“提交”,
效果为:
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。