Форум сайта python.su
Какая-то ошибка с авторизацией. Ввожу логин и пароль, меня редиректит на главную страницу, как и нужно, но авторизация не происходит.
Вот мой код:
settings.py
INSTALLED_APPS = ( 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', ) MIDDLEWARE_CLASSES = ( 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.auth.middleware.SessionAuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', ) TEMPLATE_CONTEXT_PROCESSORS = ( "django.contrib.auth.context_processors.auth", "django.core.context_processors.debug", "django.core.context_processors.i18n", "django.core.context_processors.media", "django.core.context_processors.static", "django.core.context_processors.tz", "django.contrib.messages.context_processors.messages", )
from django.shortcuts import render_to_response, redirect from django.contrib import auth from django.core.context_processors import csrf def mylogin(request): args = {} args.update(csrf(request)) if request.POST: username = request.POST.get('username', '') password = request.POST.get('password', '') user = auth.authenticate(username=username, password=password) if user is not None: auth.login(request, user) return redirect('/') else: args['login_error'] = "Пользователь не найден" return render_to_response('loginsys/login.html', args) else: return render_to_response('loginsys/login.html', args)
{% if user.is_authenticated %} <li><a class="navbar-brand" href="/auth/logout/">Выйти <strong>{{ user.username }}</strong>.</a></li> {% else %} <li><a class="navbar-brand" href="/auth/login/">Войти</a></li> {% endif %}
from django.conf.urls import patterns, url from loginsys.views import mylogin urlpatterns = patterns('', url(r'^login/$', mylogin), )
from django.conf.urls import patterns, include, url
from django.contrib import admin
urlpatterns = patterns('',
url(r'^admin/', include(admin.site.urls)),
url(r'^auth/', include('loginsys.urls')),
)
Отредактировано neri (Апрель 22, 2015 11:52:38)
Офлайн
urls.py покажите
Офлайн
urls.py
from django.conf.urls import patterns, url from loginsys.views import mylogin urlpatterns = patterns('', url(r'^login/$', mylogin), )
Офлайн
надо еще
'django.contrib.sessions.middleware.SessionMiddleware'
https://docs.djangoproject.com/en/1.8/topics/auth/default/#authentication-in-web-requests
Офлайн
'django.contrib.sessions.middleware.SessionMiddleware' - есть. Выложил просто не все настройки.
Подредактировал первый пост, включив в него все настройки и файлы urls.py
Офлайн
neri
url(r'^login/$', mylogin),
Офлайн
Форма отправки?
<div> <form action="/auth/login/" method="post"> {% csrf_token %} <label for="username">Имя пользователя</label> <input type="text" name="username" id="username"> <label for="password">Пароль</label> <input type="password" name="password" id="password"> {% if login_error %} <label class="error">{{ login_error }} </label> {% endif %} <input class="btn btn-primary" type="submit" value="Войти"> <div><a href="/auth/register/">Регистрация</a></div> </form> </div>
Офлайн
Вы отправляете авторизационные данные
neriне туда, где их хотите обрабатываеть
<form action=“/auth/login/” method=“post”>
neri
url(r'^login/$', mylogin),
Офлайн
Но в urls проекта включены url приложения авторизации.
url(r'^auth/', include('loginsys.urls')),
url(r'^login/$', mylogin),
“/auth/login/”
Отредактировано neri (Апрель 22, 2015 15:34:18)
Офлайн
neriНе понимаю, с чего вы так решили.
Они же должны складываться
Офлайн