Вход / выход из Django - PullRequest
       2

Вход / выход из Django

5 голосов
/ 16 мая 2011

Я пытаюсь создать страницу входа и выхода с помощью django. У меня проблема в том, что когда я отправляю форму, она не соответствует указанному мной URL. Когда я нажимаю кнопку входа в систему, я хочу, чтобы она перешла на http://127.0.0.1:8000/home/, но вместо этого она переходит на http://127.0.0.1:8000/?next=/home/.

Ниже мой код для входа / выхода из системы в моем view.py:

def login(request):
    def errorHandler(error):
    return render_to_response('login.html', {'error' : error})
    if request.method == 'POST':
        username = request.POST['username']
        password = request.POST['password']
        user = authenticate(username = username, password = password)
        if user is not None:
            if user.is_active:
                authLogin(request, user)
                fullName = user.get_full_name
                return render_to_response('logged_in.html', {'full_name': fullName})
            else:
                error = 'Account disabled.'
        return errorHandler(error)
        else:
            error = 'Invalid details entered.'
        return errorHandler(error)

    return render_to_response('login.html')

@login_required
def logout(request):
    authLogout(request)
    return render_to_response('logged_in.html')

мой логин.html:

{% extends "base.html" %}

{% block content %}

  {% if error %}
    <p><b><font color="red">Error: </font></b>{{ error }}</p>
  {% endif %}

  <form action="/home/" method="post">
    <label for="username">User name:</label>
    <input type="text" name="username" value="" id="username">
    <label for="password">Password:</label>
    <input type="password" name="password" value="" id="password">

    <input type="submit" value="Login" />
    <input type="hidden" name="next" value="{{ next|escape }}" />
  </form>

{% endblock %}

my logged_in.html:

{% extends "base.html" %}

{% block name %}{{ full_name }} is {% endblock %}

{% block content %}
    <p><a href='/'>Logout</a></p>
{% endblock %}

URL:

(r'^$', 'myapp.views.login'),
(r'^home/$', 'myapp.views.logout'), 

Пожалуйста, помогите

Ответы [ 2 ]

2 голосов
/ 16 мая 2011

Проблема в том, что вы фактически не входите в систему пользователя, форма отправляет неаутентифицированного пользователя на /home/, который не может быть обработан, потому что для этого требуется вход в систему.:-) Таким образом, он перенаправляет пользователя для входа в систему, сохраняя место назначения в параметре next.

Решение : <form action="" method="post">

0 голосов
/ 16 мая 2011

возможно, вам следует попробовать удалить скрытый ввод с именем = "далее" http://docs.djangoproject.com/en/1.2/topics/auth/#django.contrib.auth.views.login

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...