-1

我有那个urls.py

from django.conf.urls import patterns, url

urlpatterns = patterns('',
    url(
        r'^login/$', 
        'django.contrib.auth.views.login', 
        {'template_name': 'loyalty/login.html'}, 
        name='login'
    ),
    url(
        r'^logout/$', 
        'django.contrib.auth.views.logout', 
        {'next_page': '/', },
        name='logout'),
)

并有模板login.html*

{% extends "loyalty/auth.html" %}
  {% load i18n %}  

  {% block auth_form %}
  {% if messages %}
  <ul>
    {% for message in messages %}
    <li>{{ message }}</li>
    {% endfor %}
  </ul>
  {% endif %}

  <form action="" method="post" id="login-form">{% csrf_token %}
    {% if form.username.errors %}{{ form.username.errors }}{% endif %}
    {{ form.username }}
    {% if form.password.errors %}{{ form.password.errors }}{% endif %}
    {{ form.password }}
    <input type="hidden" name="this_is_the_login_form" value="1" />
    <input type="hidden" name="next" value="{{ next }}" />
    <button type="submit" name="submit">{% trans 'Log in' %}</button>
  </form>
  {% endblock %}

我在settings.py 中有:

MIDDLEWARE_CLASSES = (
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.locale.LocaleMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    # Uncomment the next line for simple clickjacking protection:
    # 'django.middleware.clickjacking.XFrameOptionsMiddleware',
)

但这给了我这个错误:

禁止 (403)
CSRF 验证失败。请求中止。
帮助
失败原因:
未设置 CSRF cookie。

在管理界面中,我有同样的问题。

我能做些什么来解决这个问题?

4

2 回答 2

1

您可能没有从您的视图中传递请求上下文。

例子:

def show_form(request):
    form = MyForm()
    if request.method == 'POST':
         form = MyForm(request.POST)
         if form.is_valid():

    return render_to_response("template_to_display.html", {'form':form}, context_instance = template.RequestContext(request))

更新:我建议重新安排你的中间件。尝试删除本地中间件或最后放置它。django 默认是这个

于 2012-12-13T16:27:36.123 回答
0

我解决了这个问题。浏览器出现问题。尝试了其他浏览器,一切正常。不明白为什么我会遇到这个问题,因为我尝试过清理缓存和 cookie。

于 2012-12-14T04:53:04.453 回答