zoukankan      html  css  js  c++  java
  • django框架学习:二十三.django表单提交-post请求注册案例

    前言

    上篇学习了get请求,这篇介绍一下post请求。工作中会经常遇到网站注册场景,今天就以常见的网站注册案例学习django框架实现post请求。

    注册页面html5

    注册页面设计,姓名,年龄,qq号,提交

    templates/post_info.html

    post请求form下面加个 {% csrf_token %} 防止跨站点伪造请求

    csrf_token

    CSRF, Cross Site Request Forgery, 跨站点伪造请求。

    举例来讲,某个恶意的网站上有一个指向你的网站的链接,如果某个用户已经登录到你的网站上了,那么当这个用户点击这个恶意网站上的那个链接时,就会向你的网站发来一个请求,你的网站会以为这个请求是用户自己发来的,其实呢,这个请求是那个恶意网站伪造的。

    django 第一次响应来自某个客户端的请求时,会在服务器端随机生成一个 token,把这个 token 放在 cookie 里。然后每次 POST 请求都会带上这个 token,这样就能避免被 CSRF 攻击。

    • 在返回的 HTTP 响应的 cookie 里,django 会为你添加一个 csrftoken 字段,其值为一个自动生成的 token
    • 在所有的 POST 表单时,必须包含一个 csrfmiddlewaretoken 字段 (只需要在模板里加一个 tag, django 就会自动帮你生成)
    • 在处理 POST 请求之前,django 会验证这个请求的 cookie 里的 csrftoken 字段的值和提交的表单里的 csrfmiddlewaretoken 字段的值是否一样。如果一样,则表明这是一个合法的请求,否则,这个请求可能是来自于别人的 csrf 攻击,返回 403 Forbidden.
    • 在所有 ajax POST 请求里,添加一个 X-CSRFTOKEN header,其值为 cookie 里的 csrftoken 的值         

    视图函数

    html表单提交页面处理完成后,创建视图函数,先去获取html页面请求方式信息,如果是get请求方式页面跳转到post_info.html页面,如果是post方式,先去数据库查询用户名是否存在,不存在会将提交的数据保存,用户名存在提示用户名已经存在,跳转回原页面。

    视图函数设计完之后,将context中的msg渲染到html页面

     添加urls.py地址

    启动django服务,浏览器输入http://localhost:8000/post_info/

     

    打开navicat查看注册数据,已经添加成功

     

    添加已经存在的用户名,返回用户名已经存在,抢更换用户名

  • 相关阅读:
    ubuntu: no module named _sqlite
    mysql慢查询分析工具 pt-query-digest
    vue中的时间修饰符stop,self
    面试题 —— Ajax的基本原理总结
    es6笔记 day6-Symbol & generator
    类(class)和继承
    es6笔记 day4---模块化
    es6笔记 day3---Promise
    es6笔记 day3---对象简介语法以及对象新增
    es6笔记 day3---数组新增东西
  • 原文地址:https://www.cnblogs.com/liushui0306/p/12673865.html
Copyright © 2011-2022 走看看