在最近的Django的学习中,慢慢的开始踩坑,开此栏,专为收纳Django的坑,在之后的学习中以便警示。(使用工具为pycharm专业版2018.2.4,python3.5.2,Django版本2.1.3)html
一、关于提取表单的数据。前端
在前端经过表单提交数据,请求为post的请求,method="post",这里的post不用区分大小写:python
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,代码为:django
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,页面会返回错误信息以下:安全
二、关于CSRF(跨站请求伪造)验证失败服务器
在一开始的测试中,每次访问服务器,网页提示CSRF验证失败,请求终止。这个CSRF是Django的一种安全机制,能够必定程度的防止其余网站伪造入侵。工具
具体错误以下:post
这些提示并无看懂什么意思,但也按照提到的某些关键词在django中设置过,好比把DEBUG=True该为DEBUG=False等等,最终都没成功。学习
最后是把关于那个CSRF验证的机制的代码给注释掉就解决这个问题,以下:测试
那样注释掉是一种逃避的方式,最好不要采起,还有一种就是在html页面表单旁加 {% csrf_token %}就能够解决。