Django csrf_token 未实现隐藏字段
Django csrf_token not implementing hidden field
我在 Django 项目中工作,部分功能是用户登录,但无法正常工作。同一段代码在 10 分钟前运行良好。
错误: 在模板中使用了 csrf_token,但上下文未提供值。
仅供参考,我已经尝试使用 render()
和 render_to_template()
但没有任何效果。文件
views.py
def login(request):
context=RequestContext(request)
if request.method=='POST':
username=request.POST.get('username')
password=request.POST.get('password')
user=auth.authenticate(username=username, password=password)
if user:
if user.is_active:
auth.login(request,user)
return render_to_response('ProjectLogging/main.html',{'user':user, 'project_list':Project.objects.all()}, context)
else:
return HttpResponse("Your account is disabled.")
else:
return HttpResponse("Invalid login credentials.")
return render_to_response('ProjectLogging/login.html')
urls.py
urlpatterns=patterns('ProjectLogging',
url(r'^$', 'views.login', name="index"),
url(r'^login/$', 'views.login', name="login"),
url(r'^logout/$', 'views.logout', name="logout"),
url(r'^main/$','views.main', name="main"),
url(r'^(user/?P<username>\w+)$', 'views.main'),
)
login.html
{%extends "base.html"%}
{%block content%}
<h1>Sign In {%if user.is_authenticated%}{{user.username}} {%else%} user {%endif%}</h1>
{%if form.errors%}
{%for error in form.errors%}
<p class="error">error</p>
{%endfor%}
{%endif%}
<form action="/login/" method="post">
{% csrf_token %}
<p>
<label for="username">Username: </label>
<input type="text" name="username" value="" id="username">
</p>
<p>
<label for="password">Password: </label>
<input type="password" name="password" value="" id="password">
</p>
<p><input type="submit" value="Log In"></p>
</form>
{%endblock%}
谢谢。
您应该将 RequestContext
提供给 render_to_response()
调用,或者作为更好的选择,使用 render()
快捷方式:
from django.shortcuts import render
return render(request, 'ProjectLogging/login.html')
我在 Django 项目中工作,部分功能是用户登录,但无法正常工作。同一段代码在 10 分钟前运行良好。
错误: 在模板中使用了 csrf_token,但上下文未提供值。
仅供参考,我已经尝试使用 render()
和 render_to_template()
但没有任何效果。文件
views.py
def login(request):
context=RequestContext(request)
if request.method=='POST':
username=request.POST.get('username')
password=request.POST.get('password')
user=auth.authenticate(username=username, password=password)
if user:
if user.is_active:
auth.login(request,user)
return render_to_response('ProjectLogging/main.html',{'user':user, 'project_list':Project.objects.all()}, context)
else:
return HttpResponse("Your account is disabled.")
else:
return HttpResponse("Invalid login credentials.")
return render_to_response('ProjectLogging/login.html')
urls.py
urlpatterns=patterns('ProjectLogging',
url(r'^$', 'views.login', name="index"),
url(r'^login/$', 'views.login', name="login"),
url(r'^logout/$', 'views.logout', name="logout"),
url(r'^main/$','views.main', name="main"),
url(r'^(user/?P<username>\w+)$', 'views.main'),
)
login.html
{%extends "base.html"%}
{%block content%}
<h1>Sign In {%if user.is_authenticated%}{{user.username}} {%else%} user {%endif%}</h1>
{%if form.errors%}
{%for error in form.errors%}
<p class="error">error</p>
{%endfor%}
{%endif%}
<form action="/login/" method="post">
{% csrf_token %}
<p>
<label for="username">Username: </label>
<input type="text" name="username" value="" id="username">
</p>
<p>
<label for="password">Password: </label>
<input type="password" name="password" value="" id="password">
</p>
<p><input type="submit" value="Log In"></p>
</form>
{%endblock%}
谢谢。
您应该将 RequestContext
提供给 render_to_response()
调用,或者作为更好的选择,使用 render()
快捷方式:
from django.shortcuts import render
return render(request, 'ProjectLogging/login.html')