登录后无法让django-registration重定向到?

时间:2011-05-24 19:54:01

标签: django django-registration

这似乎是一个非常简单的问题,但我无法让它发挥作用。如果特定视图函数中存在?next=.....装饰器,则django-registration将传递正确的@login_required。用户登录后,用户将被重定向到他想要查看的页面。这很好,工作正常。

我的问题是我有这个不需要登录的html页面,但是如果你想登录,我有一个<a href='{% url auth_login>。如果用户从此html登录,则?next=会显示空白,并重定向到默认位置accounts/profile/。我还没有设置用户个人资料,因此出现TemplateDoesNotExist错误。

我有这样的事情:

views.py

...
def display_all(request):
    response = list_detail.object_list(
               request,
               queryset = MyModel.objects.all(),
               template_name = 'show_all.html'
    )
    return response

-

show_all.html

<html>
<head>
          <title> Display Everything </title>
</head>
<body>
          <a href='{% url auth_login %}?next={{ request.path }}'>Login</a>
          <h1> Displaying all items! </h1>
          <ul>
                  {% for item in object_list %}
                       <li> {{ item.name }} </li>
                  {% endfor %}
          </ul>
</body>
</html>

在这里,我通过列出来显示所有内容,如果你想登录,我在顶部有一个登录链接。{{ request.path }}返回一个空字符串,所以我得到的最终结果是http://localhost:8000/accounts/login/?next=它将重定向到默认accounts/profile/

2 个答案:

答案 0 :(得分:4)

如果问题是request.path为空,则需要在settings.py中向TEMPLATE_CONTEXT_PROCESSORS添加“django.core.context_processors.request”。 看django docs

答案 1 :(得分:0)

用于填充 RequestContext 中的上下文的可调用元组。这些可调用对象将请求对象作为其参数,并返回要合并到上下文中的项的字典。

TEMPLATE_CONTEXT_PROCESSORS默认值: https://docs.djangoproject.com/en/dev/ref/settings/#template-context-processors