Я пытаюсь создать login
страницу с помощью django auth.views
Но, к сожалению, пользователь не получает войти в систему. Я даже пытался войти в систему как суперпользователь (возможность входа в систему с помощью Джанго администратора). Но не смог войти в систему как суперпользователь даже через мой логин.
Вот мой views.py
Джанго Логин не работает
from django.shortcuts import render
from django.http import HttpResponse,HttpResponseRedirect
from django.core.urlresolvers import reverse
from django.utils.decorators import method_decorator
from django.contrib.auth.decorators import login_required
from .forms import LoginForm
from django.utils import timezone
from django.views.generic.base import TemplateView, RedirectView
from django.views.generic.edit import FormView
from django.views.generic import DetailView, ListView
from django.contrib.auth.forms import AuthenticationForm
from django.contrib.auth import login as auth_login
from django.shortcuts import redirect, resolve_url
from django.utils.decorators import method_decorator
from django.views.decorators.debug import sensitive_post_parameters
class IndexView(TemplateView):
template_name = 'index.html'
def get_context_data(self, **kwargs):
context = super(IndexView, self).get_context_data(**kwargs)
context = {'now':timezone.localtime(timezone.now(),timezone = None) }
return context
class Login(FormView):
form_class = AuthenticationForm
def form_valid(self, form):
redirect_to = settings.LOGIN_REDIRECT_URL
auth_login(self.request, form.get_user())
if self.request.session.test_cookie_worked():
self.request.session.delete_test_cookie()
return HttpResponseRedirect(redirect_to)
def form_invalid(self, form):
return self.render_to_response(self.get_context_data(form=form))
@method_decorator(sensitive_post_parameters('password'))
def dispatch(self, request, *args, **kwargs):
request.session.set_test_cookie()
return super(Login, self).dispatch(request, *args, **kwargs)
class ProfileView(TemplateView):
template_name='profile.html'
@method_decorator(login_required)
def dispatch(self, *args, **kwargs):
if self.request.user.is_active:
return super(ProfileView, self).dispatch(*args, **kwargs)
else:
return HttpResponseRedirect('%s?next=%s' % (settings.LOGIN_URL, self.srequest.path))
В settings.py
У меня есть значения настройки для LOGIN_URL
и LOGIN_REDIRECT_URL
в 'accounts/login'
и 'accounts/profile'
соответственно.
Это моя форма в шаблоне.
<form method="post" action="{% url 'django.contrib.auth.views.login' %}">
{% csrf_token %}
{{ form.as_p }}
<input class="btn btn-danger form-control submit-btn" type="submit" value="Login + Access Profile" />
</form>
Проблема: После ввода учетных данных, URL-адрес просто добавляет csrfmiddletoken = ..... Она не перенаправлять на страницу профиля. Пользователь также не регистрируется (поскольку при посещении
accounts/profile
он перенаправляется на страницу входа.)
Может ли кто-нибудь помочь мне в этом. Я просто изучаю классы, основанные на классе Django, аутентификацию. Заранее спасибо.
Я не знаю, почему вы разместили свои views.py, вы отправляете на встроенные представления Django, так что ваши собственные представления не используются. –
Итак, нужно ли менять действие формы? @DanielRoseman –
Даниэль Роземан прав, вы звоните в автоответчик Django. Измените actio nand и убедитесь, что ваш url.py вызывает ваше мнение. – jcs