Python Django:禁止(CSRF令牌丢失或不正确。)
我的django版本是1.11.4,我正在书中做一个简单的练习,我需要制作一个网页,人们可以提交他们对所选餐厅的评论 但它显示消息Python Django:禁止(CSRF令牌丢失或不正确。),python,django,Python,Django,我的django版本是1.11.4,我正在书中做一个简单的练习,我需要制作一个网页,人们可以提交他们对所选餐厅的评论 但它显示消息禁止(CSRF令牌丢失或不正确)。 views.py: def comments(request, id): if id != 0: r = Restaurant.objects.get(id = id) else: return HttpResponseRedirect('/restaurantsList/')
禁止(CSRF令牌丢失或不正确)。
views.py:
def comments(request, id):
if id != 0:
r = Restaurant.objects.get(id = id)
else:
return HttpResponseRedirect('/restaurantsList/')
if request.POST:
dateTime = timezone.localtime(timezone.now())
Comment.objects.create(
content = request.POST['content'],
visitor = request.POST['visitor'],
email = request.POST['email'],
dateTime = dateTime,
restaurant = r
)
return render_to_response('comments.html', locals(), RequestContext(request))
comments.html:
<!doctype html>
<html>
<head>
<title>Comments</title>
<meta charset='utf-8'>
</head>
<body>
<h2>Comments for {{ r.name }}</h2>
{% if r.comment_set.all %}
<p>We have {{ r.comment_set.all | length }} comments</p>
<table>
<tr>
<th>Visitor</th>
<th>Time</th>
<th>Comment</th>
</tr>
{% for c in r.comment_set.all %}
<tr>
<td>{{ c.visitor }}</td>
<td>{{ c.dateTime | date:'F j, Y' }}</td>
<td>{{ c.content }}</td>
</tr>
{% endfor %}
</table>
{% else %}
<p>No comment</p>
{% endif %}
<br /><br />
<form action='' method='post'> {% csrf_token %}
<table>
<tr>
<td><label for='visitor'>Visitor: </label></td>
<td><input id='visitor' type='text' name='visitor'></td>
</tr>
<tr>
<td><label for='email'>E-mail: </label></td>
<td><input id='email' type='text' name='email'></td>
</tr>
<tr>
<td><label for='content'>Comment: </label></td>
<td>
<textarea id='content' rows='10' cols='48'
name='content'></textarea></td>
</td>
</tr>
</table>
<input type='submit' value='Submit'>
</form>
</body>
评论
{{r.name}的注释
{%if r.comment\u set.all%}
我们有{r.comment_set.all | length}个注释
访客
时间
评论
{r.comment_set.all%}
{{c.visitor}}
{{c.dateTime}日期:'fj,Y'}
{{c.content}}
{%endfor%}
{%else%}
无可奉告
{%endif%}
{%csrf_令牌%}
参观者:
电邮:
评论:
我在.html中添加了{%csrf\u token%}
,在view函数中使用了RequestContext(request)
,并尝试了几种从Internet搜索的方法。但它仍然不起作用
谁能帮我一个忙吗?谢谢 你应该使用一本更新的书
render_to_response
已弃用,此处不应使用RequestContext
。此外,传递局部变量
是一种可怕的反模式,尽管这不是问题的原因
return render(request, 'comments.html', {'r': r})
如果您正在寻找更多最新的教程,那么polling教程和Django Girls教程都是很好的起点:以及