django请求流程,django入门与实践

  django请求流程,django入门与实践

  本文主要详细介绍Django的请求和响应。本文中的示例代码非常详细,具有一定的参考价值。感兴趣的朋友可以参考一下,希望能帮到你。

  00-1010前言请求:requestGET和POSTcsrf_token的响应摘要是什么

  

目录

 

  在上一章中,我们讨论了如何引用静态文件和模板,以及如何使用常见的Django命令。那么在这一章里,我们来讲讲Django是如何向浏览器发送数据的,以及我们是如何接收浏览器返回的数据的。

  

前言

 

  

请求

 

  在我们的视图函数中,每个函数都有一个请求参数,那么这个请求是什么呢?注意,request是一个对象,封装了用户通过浏览器或爬虫等发送过来的所有请求相关的数据。,这里的请求不在python请求模块中。

  

什么是request

 

  GET POST和GET POST都是一种请求。一般我们在浏览器中输入一个URL访问网站,这是一个GET请求;在表单表单中,可以通过设置方法将提交方式指定为GET或POST,默认为GET提交方式。它们之间最直观的区别就是GET把参数包含在URL中;POST通过request body传递参数,它不会作为url的一部分,不会被缓存、保存在服务器日志、以及浏览器浏览记录中。(一个看得到,一个看不到)

  请求有一个特殊的方法——method来检查用户的请求模式。现在就来验证一下吧!以我上次测试的函数为例,添加print(request.method)语句,其对应的网页路径为/hd。

  然后我们点击运行,访问http://127 . 0 . 0 . 33608000/HD/

  回到我们的pycharm,您可以看到用于访问网页的请求方法。这是一个get请求。

  另外,我们可以通过request得到网页上url传递的参数。获取如何传递参数?输入“?”网址后,然后就可以输入参数了。多个参数与。

  还是就以3358127 . 0 . 0 . 1:8000/HD/为例,在后面输入?A=5b=3变成了

  3358127 . 0 . 0 . 1:8000/HD/http://www . Sina.com/。最后,请求。GET(视图函数测试中使用GET方法,并打印结果。

  GET请求之后,让我们用例子解释POST请求。POST请求经常出现在表单中,使用时需要通过方法指定。我们模拟一个非常简单的用户注册界面:我们输入用户名和密码后,希望用两个变量来接收,以便以后存储在数据库中。

  先做一个简单的HTML页面。当我们提交表单数据时,我们跳转到/save/页面来保存它。

  !声明文档类型

  html lang=en

  头

  meta charset=UTF-8

  标题用户注册/标题

  /头

  身体

  H1用户注册系统/h1

  form method= post action=/save/

  p用户名:lt

  ;input type="text" name="user" value="请输入用户名"></p>

   密 码:<input type="password" name="password"></p>

   <p><input type="submit" value="注册"></p>

  </form>

  </body>

  </html>

  

  接着定义两个视图函数,一个调用模板用来注册用户,一个用来保存用户信息并提示注册成功。

  

def login(request):

 

  最后再新增两个路由

  

urlpatterns = [

 

  现在就能开始注册啦!

  先运行程序,然后进入http://127.0.0.1:8000/login/

  

 

  输入完用户名和密码后点击注册,发现…被禁用了?

  

 

  

 

  

csrf_token

 

  为降低安全隐患,django专门为用户设置了一个防止跨站请求伪造(csrf)的功能——csrf_token。当在表单中用post提交数据的时候,django会去检查是否有一个csrf的随机字符串,如果没有就会报错,也就是刚才出现的页面。

  因此,我们在表单中使用post传递数据时需要加上{% csrf_token %}这条命令。

  我们加上这条命令后重新运行进入注册网页,发现多了一串秘钥是之前没有的。

  

 

  再次输入用户名与密码,然后点击注册,就能注册成功了!接着回到pycharm也能够看到用户名跟密码都打印出来了

  

 

  

 

  

响应

 

  常见的响应形式一般有三种HttpResponse,render,redirect。前面两种我们已经使用过。

  HttpResponse可以返回简单的字符串

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

  render

  它的作用是调用模板,并能通过字典向模板传入数据。它有以下属性:

  

  • request:用于生成响应的请求对象。必须要写

  • template_name:要使用的模板的完整名称。 也要写

  • context:添加到模板上下文的一个字典. 默认是一个空字典. 如果字典中的某个值是可调用的, 视图将在渲染模板之前调用它.

  • content_type: 生成的文档要使用的MIME类型. 默认为DEFAULT_CONTENT_TYPE设置的值. 默认为"text/html"

  • status:响应的状态码. 默认为200

 

  重定向

  我单独把它拎出来呢是因为前面我们没有讲过重定向,因此我要举个例子说明一下。在上面的用户注册系统上稍作修改:我们注册完用户信息后不再提示用户注册成功,而是直接跳转到登录成功后的页面。

  在视图函数save中将原先的 return HttpResponse(注册成功!) 改为return redirect("https://www.baidu.com")。点击运行后再次进入http://127.0.0.1:8000/login/

  输入完用户名密码点击注册后就能跳转啦!

  

 

  

 

  

总结

 

  本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注盛行IT软件开发工作室的更多内容!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: