Не можете получить django-регистрацию для перенаправления? Далее после входа в систему - PullRequest
0 голосов
/ 24 мая 2011

Кажется, это действительно простая проблема, но я не могу заставить ее работать.Регистрация django будет проходить в правильном ?next=....., если в конкретной функции просмотра присутствует декоратор @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 ]

4 голосов
/ 25 мая 2011

Если ваша проблема в том, что request.path пуст, вам нужно добавить «django.core.context_processors.request» в TEMPLATE_CONTEXT_PROCESSORS в settings.pyПосмотрите на Django Docs

0 голосов
/ 23 февраля 2014

Кортеж вызываемых объектов, используемых для заполнения контекста в RequestContext . Эти вызываемые объекты принимают объект запроса в качестве аргумента и возвращают словарь элементов, которые должны быть объединены в контекст.

TEMPLATE_CONTEXT_PROCESSORS По умолчанию: https://docs.djangoproject.com/en/dev/ref/settings/#template-context-processors

...