Code前端首页关于Code前端联系我们

Django 的 GET 请求和 POST 请求及其响应处理

terry 2年前 (2023-09-24) 阅读数 100 #后端开发

Django之GET请求和POST请求及其响应处理

1.请求中的方法

方法 说明
GET 是指定页面的信息和请求的正文。
HEAD与GET请求类似,只不过返回的响应中没有具体内容来获取header。
发布将数据提交到指定资源以处理请求(例如:提交表单或上传文件)。数据包含在查询正文中。 PoST 请求可能导致创建新资源和/或修改现有资源。
PUT从客户端传输到服务器的数据会替换给定文档的内容。
DELETE 请求服务器删除指定页面。
CONNECTHTTP/1.1 协议保留了一个代理服务器,可以更改与进程方法的连接。
选项允许客户端查看服务器性能。
TRACE回显从服务器收到的请求,主要用于测试或连接。

2。 Django中的请求

方法描述
path_infoURL字符串
方法

方法

,G中的P dic值:String' GET QueryDict 查询字典对象,包括来自 get 请求方法的所有数据。
POSTQueryDict 查询字典对象,包含 post 请求方法中的所有数据。
FILES包含所有上传文件信息的类似字典的对象。
COOKIESPython 字典,包含所有 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 TypeAction Status代码HttpResponseRedirect重定向302HttpResponse302HttpResponse❙❓未修改 HttpRespon seBadRequest错误请求400HttpResponseNotFound没有合适的资源404 HttpResponseForbiddenA请求被拒绝403HttpResponseServerError服务器错误500

    5. GET 请求示例测试♽视图并使用 Djanpy 创建 mysite Phon。如下:

    Django之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/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 效果为:

    Django之GET请求和POST请求及其响应处理

    Django之GET请求和POST请求及其响应处理

    6。 GET处理和POST处理

    定义:

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

    Django之GET请求和POST请求及其响应处理

    GET处理:

    GET请求操作,通常用于从服务器获取数据。

    可以生成 GET 请求的场景:

    • 在浏览器地址栏中输入 URL,然后在表单中按 Enter
    • 方法 get

    Django之GET请求和POST请求及其响应处理

    POST 处理:

    POST 请求操作,通常用于向服务器发送大型/私有数据。

    客户端通过POST请求向服务器传输数据,例如表单。

    服务器收到参数后,通过request.method判断是否是POST请求。

    Django之GET请求和POST请求及其响应处理

    Django之GET请求和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以下。输入用户名,点击“提交”,

    Django之GET请求和POST请求及其响应处理

    效果为:

    Django之GET请求和POST请求及其响应处理

    Django之GET请求和POST请求及其响应处理

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门