热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

本文主要讲述了PythonDjango的GET请求和POST请求及其响应处理,还有重定向,

一、请求中的方法

方法描述
GET请求指定的页面信息,并返回实体主体。
HEAD类似于GET请求,只不过返回的响应中没有具体的内容,用于获取报头。
POST向指定资源提交数据进行处理请求(例如:提交表单或者上传文件)。数据被包含在请求体中。PoST请求可能会导致新的资源的建立和/或已有资源的修改。
PUT从客户端向服务器传送的数据取代指定的文档的内容。
DELETE请求服务器删除指定的页面。
CONNECTHTTP/1.1协议中预留能够将连接改为管道方式的代理服务器。
OPTIONS允许客户端查看服务器的性能。
TRACE回显服务器收到的请求,主要用于测试或连接。

二、Django中的请求

方法描述
path_infoURL字符串
method字符串,表示HTTP请求方法,常用值:'GET'、'POST'
GETQueryDict查询字典的对象,包含get请求方式的所有数据。
POSTQueryDict查询字典的对象,包含post请求方式的所有数据。
FILES类似于字典的对象,包含所有的上传文件信息。
COOKIESPython字典,包含所有的COOKIE,键和值都为字符串。
session似于字典的对象,表示当前的会话。
body字符串,请求体的内容(POST或PUT)
scheme请求协议('http'/'https')
request.get_full_path()请求的完整路径
request.META请求中的元数据(消息头),-request.META['REMOTE_ADDR']:客户端IP地址

三、响应状态码

下面是常见的HTTP状态码:

  • 200 - 请求成功
  • 301 - 永久重定向-资源(网页等)被永久转移到其他URL
  • 302 - 临时重定向
  • 404 - 请求的资源(网页等)不存在
  • 500 - 内部服务器错误

四、Django中的响应对象

构造函数格式:

HttpResponse(cOntent=响应体,content_type=响应体数据类型,status=状态码)

作用:

向客户端浏览器返回响应,同时携带响应体内容

参数:

  • content:表示返回的内容。
  • ststus_code:返回的HTTP响应状态码(默认为200)。
  • content_type:指定返回数据的MIME类型(默认为"text/html")。浏览器会根据这个属性,来显示数据。如果是text/html,那么就会解析这个字符串,如果text/plain,那么就会显示一个纯文本。

常用的Content-Type如下:

  • 'text/html':默认的html文件
  • 'text/plain':纯文本
  • 'text/css':css文件
  • 'text/Javascript':js文件
  • 'multipart/form-data':文件提交
  • 'application/json':json传输
  • 'application/xml':xml文件

HttpResponse子类:

类型作用状态码
HttpResponseRedirect重定向302
HttpResponseNotModified未修改304
HttpResponseBadRequest错误请求400
HttpResponseNotFound没有对应的资源404
HttpResponseForbidden请求被禁止403
HttpResponseServerError服务器错误500

五、GET请求实例测试

Python利用Django创建mysite工程,添加views.py文件,如下图示:


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:8000/test_request/?m=1&n=2
效果如下:

六、GET处理和POST处理

定义:

无论是GET还是POST,统一都由视图函数接收请求,通过判断request.method区分具体的请求动作。

GET处理:

GET请求动作,一般用于向服务器获取数据。

能够产生GET请求的场景:

POST处理:

POST请求动作,一般用于向服务器提交大量/隐私数据。

客户端通过表单等POST请求将数据传递给服务端。

服务器端接收参数,通过request.method来判断是否为POST请求。



七、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 = '''

用户名:


'''



def main_page(request):
html = """

这是我的网站首页


大土土随笔
"""
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
效果如下:


输入用户名,单击“提交”按钮,

效果如下:


     


    

          欢迎关注微信公众号“捷创源科技”,获取更多技术资料!欢迎微信扫码加入“捷创源”知识星球!每天获取技术干货,让我们一起成长!





推荐阅读
  • 本文探讨了使用JavaScript在不同页面间传递参数的技术方法。具体而言,从a.html页面跳转至b.html时,如何携带参数并使b.html替代当前页面显示,而非新开窗口。文中详细介绍了实现这一功能的代码及注释,帮助开发者更好地理解和应用该技术。 ... [详细]
  • 在对WordPress Duplicator插件0.4.4版本的安全评估中,发现其存在跨站脚本(XSS)攻击漏洞。此漏洞可能被利用进行恶意操作,建议用户及时更新至最新版本以确保系统安全。测试方法仅限于安全研究和教学目的,使用时需自行承担风险。漏洞编号:HTB23162。 ... [详细]
  • 本指南介绍了 `requests` 库的基本使用方法,详细解释了其七个主要函数。其中,`requests.request()` 是构建请求的基础方法,支持其他高级功能的实现。此外,我们还重点介绍了如何使用 `requests.get()` 方法来获取 HTML 网页内容,这是进行网页数据抓取和解析的重要步骤。通过这些基础方法,读者可以轻松上手并掌握网页数据抓取的核心技巧。 ... [详细]
  • Django框架进阶教程:掌握Ajax请求的基础知识与应用技巧
    本教程深入探讨了Django框架中Ajax请求的核心概念与实用技巧,帮助开发者掌握异步数据交互的方法,提升Web应用的响应速度和用户体验。通过实例解析,详细介绍了如何在Django项目中高效实现Ajax请求,涵盖从基础配置到复杂场景的应用。 ... [详细]
  • 在前一篇文章中,我们介绍了如何使用Requests库发送GET请求。本文将深入探讨如何通过Requests库发送POST请求,包括参数格式、请求封装等关键技巧,并通过“历史上的今天”API实例进行详细说明。 ... [详细]
  • 在PHP中如何正确调用JavaScript变量及定义PHP变量的方法详解 ... [详细]
  • 技术分享:使用 Flask、AngularJS 和 Jinja2 构建高效前后端交互系统
    技术分享:使用 Flask、AngularJS 和 Jinja2 构建高效前后端交互系统 ... [详细]
  • DVWA学习笔记系列:深入理解CSRF攻击机制
    DVWA学习笔记系列:深入理解CSRF攻击机制 ... [详细]
  • 本文介绍了如何利用Struts1框架构建一个简易的四则运算计算器。通过采用DispatchAction来处理不同类型的计算请求,并使用动态Form来优化开发流程,确保代码的简洁性和可维护性。同时,系统提供了用户友好的错误提示,以增强用户体验。 ... [详细]
  • 在 Axublog 1.1.0 版本的 `c_login.php` 文件中发现了一个严重的 SQL 注入漏洞。该漏洞允许攻击者通过操纵登录请求中的参数,注入恶意 SQL 代码,从而可能获取敏感信息或对数据库进行未授权操作。建议用户尽快更新到最新版本并采取相应的安全措施以防止潜在的风险。 ... [详细]
  • 在Django中提交表单时遇到值错误问题如何解决?
    在Django项目中,当用户提交包含多个选择目标的表单时,可能会遇到值错误问题。本文将探讨如何通过优化表单处理逻辑和验证机制来有效解决这一问题,确保表单数据的准确性和完整性。 ... [详细]
  • 在本文中,我们将为 HelloWorld 项目添加视图组件,以确保控制器返回的视图路径能够正确映射到指定页面。这一步骤将为后续的测试和开发奠定基础。首先,我们将介绍如何配置视图解析器,以便 SpringMVC 能够识别并渲染相应的视图文件。 ... [详细]
  • 利用PaddleSharp模块在C#中实现图像文字识别功能测试
    PaddleSharp 是 PaddleInferenceCAPI 的 C# 封装库,适用于 Windows (x64)、NVIDIA GPU 和 Linux (Ubuntu 20.04) 等平台。本文详细介绍了如何使用 PaddleSharp 在 C# 环境中实现图像文字识别功能,并进行了全面的功能测试,验证了其在多种硬件配置下的稳定性和准确性。 ... [详细]
  • HTTP协议作为互联网通信的基础,其重要性不言而喻。相比JDK自带的URLConnection,HttpClient不仅提升了易用性和灵活性,还在性能、稳定性和安全性方面进行了显著优化。本文将深入解析HttpClient的使用方法与技巧,帮助开发者更好地掌握这一强大的工具。 ... [详细]
  • SQLmap自动化注入工具命令详解(第28-29天 实战演练)
    SQL注入工具如SQLMap等在网络安全测试中广泛应用。SQLMap是一款开源的自动化SQL注入工具,支持12种不同的数据库,具体支持的数据库类型可在其插件目录中查看。作为当前最强大的注入工具之一,SQLMap在实际应用中具有极高的效率和准确性。 ... [详细]
author-avatar
黑小羊Mark
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有