zoukankan      html  css  js  c++  java
  • 跨过Django的坑

    在最近的Django的学习中,慢慢的开始踩坑,开此栏,专为收纳Django的坑,在以后的学习中以便警示。(使用工具为pycharm专业版2018.2.4,python3.5.2,Django版本2.1.3)

    1、关于提取表单的数据。

    在前端通过表单提交数据,请求为post的请求,method="post",这里的post不用区分大小写:

    1 <form action="index/" method="post">     #这里不用区分大小写
    2 {#<form action={% url "chris" %} } method="POST">#}
    3     <input type="text" name="username">
    4     <input type="password" name="pwd">
    5     <input type="submit" value="submit">
    6 </form>

    关键部分是在views中提取数据,如获取前端提交的username和pwd,代码为:

    def index(request):
        if request.method == 'POST':   #这里POST一定要大写!
            print("获取到数据了。")
            username = request.POST.get("username")  #这里POST一定要大写!
            pwd = request.POST.get("pwd")            #这里POST一定要大写!
            if username == 'chris' and pwd == '123':
                return HttpResponse('登录成功!')

    另外,在获取数据时如果不是大写POST,页面会返回错误信息如下:

    2、关于CSRF(跨站请求伪造)验证失败

    在一开始的测试中,每次访问服务器,网页提示CSRF验证失败,请求终止。这个CSRF是Django的一种安全机制,可以一定程度的防止其他网站伪造入侵。

    具体错误如下:

    这些提示并没有看懂什么意思,但也按照提到的某些关键词在django中设置过,比如把DEBUG=True该为DEBUG=False等等,最终都没成功。

    最后是把关于那个CSRF验证的机制的代码给注释掉就解决这个问题,如下:

    那样注释掉是一种逃避的方式,最好不要采取,还有一种就是在html页面表单旁加 {% csrf_token %}就可以解决。

  • 相关阅读:
    php 计算代码执行时间
    高级php面试题
    MongoDB 或者 redis 可以替代 memcached 吗?
    mysql中myisam,innodb和memory三个存储引擎的区别
    C#发送邮件代码
    使用bootstrap table时不能显示筛选列和分页每页显示的行数
    vue2中,字符串里如何拼接绑定对象
    压缩图片方法
    jquery的ajax方法,在返回中,find方法不起作用
    vue2中,在google浏览器中正常,在ie11中不解析
  • 原文地址:https://www.cnblogs.com/jiarenanhao/p/9937818.html
Copyright © 2011-2022 走看看