Как помешать django пропустить страницу входа для пользователя? - PullRequest
0 голосов
/ 21 сентября 2011

Пользователь не может войти в систему. Он просто перенаправляет на страницу 404:

Получение этой ошибки 404:

Страница не найдена (404) Метод запроса: GET URL запроса: http://127.0.0.1:8000/pk/invalid/

Используя URLconf, определенный в namekeepr.urls, Django попробовал эти шаблоны URL в следующем порядке: Текущий URL, pk / invalid /, не соответствует ни одному из них.

Это мой файл views.py:

# Login Page
def login(request):
    username = request.POST.get('username', '')
    password = request.POST.get('password', '')
    user = authenticate(username=username, password=password)
    if user is not None and user.is_active:
        # Correct password, and the user is marked "active"
        auth.login(request, user)
        # Redirect to a success page.
        return HttpResponseRedirect("/pk/loggedin/")
    else:
        # Show an error page
        return HttpResponseRedirect("/pk/invalid/")

1 Ответ

1 голос
/ 21 сентября 2011

Используйте декоратор login_required() для функций просмотра.

https://docs.djangoproject.com/en/1.3/topics/auth/#django.contrib.auth.decorators.login_required

from django.contrib.auth.decorators import login_required

@login_required
def my_view(request):
    ...

По умолчанию пользователи перенаправляются на LOGIN_URL, определенный в вашем settings.py.

Пример

Вот простой пример того, что происходит с точки зрения пользователя при использовании декоратора @login_required:

  1. Типы пользователяв URL своего браузера http://localhost:8000/my_view
  2. В представлении этого URL есть @login_required, и пользователь перенаправляется на страницу входа в систему: http://localhost:8000/login/?next=/my_view/
  3. После повторного входа пользователя он / онаавтоматически перенаправляется на /my_view/.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...