跨过Django的坑
在最近的Django的学习中,慢慢的开始踩坑,开此栏,专为收纳Django的坑,在以后的学习中以便警示。(使用工具为pycharm专业版2018.2.4,python3.5.2,Django版本2.1.3)
1、关于提取表单的数据。
在前端通过表单提交数据,请求为post的请求,method="post",这里的post不用区分大小写:
<form action="index/" method="post"> #这里不用区分大小写
{#<form action={% url "chris" %} } method="POST">#}
<input type="text" name="username">
<input type="password" name="pwd">
<input type="submit" value="submit">
</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 == '':
return HttpResponse('登录成功!')
另外,在获取数据时如果不是大写POST,页面会返回错误信息如下:

2、关于CSRF(跨站请求伪造)验证失败
在一开始的测试中,每次访问服务器,网页提示CSRF验证失败,请求终止。这个CSRF是Django的一种安全机制,可以一定程度的防止其他网站伪造入侵。
具体错误如下:

这些提示并没有看懂什么意思,但也按照提到的某些关键词在django中设置过,比如把DEBUG=True该为DEBUG=False等等,最终都没成功。
最后是把关于那个CSRF验证的机制的代码给注释掉就解决这个问题,如下:

那样注释掉是一种逃避的方式,最好不要采取,还有一种就是在html页面表单旁加 {% csrf_token %}就可以解决。
跨过Django的坑的更多相关文章
- 关于django的坑(一)
关于django orm 的坑: 关于设置数据库表自动更新 django的orm关于更新数据库的方法有update和save两种方法.想要表中自动更新需要一下几个条件: 使用 DateTimeFiel ...
- 我踩过的Django的坑
把自己在使用Django过程中吃过的亏 踩过的坑 记录一下 1. unique_together传的是元组 正确:unique_together = (('app_id', 'module_id', ...
- 跨过几个坑,终于完成了我的第一个Xamarin Android App!
时间过得真快,距离上次发随笔又是一年多.作为上次发的我的第一个WP8.1应用总结的后继,这次同样的主要功能,改为实现安卓版APP.前几个月巨硬收购Xamarin,把Xamarin集成到VS里了,大大方 ...
- install django采坑
1. install python 3 2. install pip 3. install virtual enviroment : python -m venv myvenv 4. 切换到virt ...
- Django的坑
静态地址:我还没有向服务器部署,这只是临时方案 编辑项目setting.py,(main/setting.py)最下面一部分# Static files (CSS, JavaScript, Image ...
- django踩坑
django输入localhost或者127.0.0.1可以进入,输入自己ip报错 结局方案: 首先找到自己的项目的setting.py文件 找到——> ALLOWED_HOSTS = [] 修 ...
- Windows+Apache+Python+Django 踩坑记录
摘要 使用Python进行Web项目开发:相对于主流三大Web端解决方案(Java/.NET/PHP) Python在某些方面具有一定的优势,相对 Java/.NET 有更轻量级的部署方案,相对PHP ...
- 【Django入坑之路】Models操作
1:字段 AutoField(Field) - int自增列,必须填入参数 primary_key=True BigAutoField(AutoField) - bigint自增列,必须填入参数 pr ...
- 【Django入坑之路】admin组件
1:settings.py 中的 INSTALLED_APPS # Application definition INSTALLED_APPS = [ 'django.contrib.admin', ...
随机推荐
- docker with redis
docker run --name myredis -d -v /home/rudy/pro/database/redis:/data -p : --privileged=true redis
- java操作特殊字符需要注意的点
在使用字符串替换,分离时 我们如果想替换一个字符串中的问号,我们就不能直接写问号,而要写[?] 实例如下 str = str.replaceAll("\""," ...
- linux内核学习之全局描述符表(GDT)(二)
来源:https://www.cnblogs.com/longintchar/p/5224406.html 在进入保护模式之前,我们先要学习一些基础知识.今天我们看一下全局描述符表(Global De ...
- C++ 运算符的重载
#include <iostream> #include <stdio.h> using namespace std; class Complex //复数类 { public ...
- Docker基础教程(命令详解)
# docker --help Usage: docker [OPTIONS] COMMAND [arg...] docker daemon [ --help | ... ] docker [ -h ...
- set集合容器(常用的使用方法总结)
关于C++STL中set集合容器的学习,看别人的代码一百遍,不如自己动手写一遍. 构造set集合容器的目的是为了去重+排序+快速搜索.由于set集合容器实现了红黑树多的平衡二叉检索树的数据结构,在插 ...
- C#基础知识回顾--委托事件
在上一篇看到他我一下子就悟了(续)---委托,被人狂喷.说写的太空,没有什么内容之类的.所以准备在这里重写下,不过还是按着以前的方式尽量简单的写.这里我们以打篮球为例. 第一步:首先,其他对象订购事件 ...
- openssh升级到openssh-7.5p1踩坑
环境:ubuntu 需要的安装包: http://zlib.net/ zlib 1.2.11最新版 http://www.linux-pam.org/library/ pam 1.3.0 ht ...
- 吉哥系列故事——临时工计划(dp)
吉哥系列故事——临时工计划 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Total ...
- 产生冠军(hdu2094)
产生冠军 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submi ...