0

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

我的问题是我有这个不需要登录的 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=将重定向到 default accounts/profile/

4

2 回答 2

4

如果您的问题是 request.path 为空,则需要在 settings.py 中将“django.core.context_processors.request”添加到 TEMPLATE_CONTEXT_PROCESSORS。查看django 文档

于 2011-05-24T22:38:08.753 回答
0

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

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

于 2014-02-23T04:24:24.617 回答