【发布时间】:2017-10-14 23:33:17
【问题描述】:
我正在学习 Django 的工作原理,为此我买了一本书。我尝试为表单创建一个带有 method="post" 的连接系统。当我提交时,没有设置 CSRF cookie 等......我在论坛上看到了很多类似的问题,但仍然有点卡住,因为我不明白所有的答案,我还没有找到除 @csrf_exempt 之外的工作但我看到这就像禁用这些东西,这不是一个好主意。这是代码:
我的 html login.html 页面:
<form action="." method="post">{% csrf_token %}
{% if error %}
<p class="error">{{ error }}</p>
{% endif %}
<p>
<label for="email">E-mail :</label>
<input name="email" id="email" size="30" type="email" />
</p>
<p>
<label for="password">Password :</label>
<input name="password" id="password" size="30" type="password" />
</p>
<p>
<input type="submit" value="Log-in" />
<a href="">Créer un compte</a>
</p>
我的意见.py:
from django.shortcuts import render_to_response
from datetime import datetime
from django.views.decorators.csrf import csrf_protect
from django.http.response import HttpResponseRedirect
# from django.http import HttpResponseRedirect
def welcome(request):
return render_to_response('welcome.html',
{'curent_date_time' : datetime.now})
@csrf_protect
def login(request):
if len(request.POST) > 0:
if 'email' not in request.POST or 'password' not in request.POST:
error = "Veuillez entrer un adresse mail et un mot de passe."
return render_to_response('login.html', {'error': error})
else:
email = request.POST['email']
password = request.POST['password']
if password != 'sesame' or email != 'pierre@lxs.be':
error = "Adresse de couriel ou mot de passe errone."
return render_to_response('login.html', {'error': error})
else:
return HttpResponseRedirect('welcome/')
else:
return render_to_response('login.html')
如果需要,我还可以显示我的设置。如果它也可以提供帮助,还有错误消息的屏幕。
P.S:我知道这上面已经有很多东西了,但我被困住了,一些个人帮助对我了解它的来源很有帮助。
【问题讨论】:
-
不确定是否相关,但我在您的代码中没有看到
</form>。 -
他是我复制代码的时候忘记选中了