История изменений
Исправление djnoob, (текущая версия) :
Скорее всего так и прийдется сделать - реализовать отдельные шаблоны для входа, регистрации, восстановления пароля. Но вдруг, ежели кто-то захочет, может воспользоваться следующими костылями:
0) Создаем экземпляр класса Form:
class LoginForm(forms.Form):
username = forms.CharField(
label=u'Имя пользователя', min_length=3, max_length=32,
widget=forms.TextInput(attrs={'class': 'form-control'})
)
password = forms.CharField(
label=u'Пароль', min_length=6, max_length=32,
widget=forms.PasswordInput(attrs={'class': 'form-control'}),
)
1) Определяем шаблон формы:
<form action="{% url "accounts:login" %}?next={{ current_url }}" method="POST">
{% csrf_token %}
<div class="form-group">
{{ form.username.errors }}
<label for="id_username">Имя пользователя:</label>
{{ form.username }}
</div>
<div class="form-group">
{{ form.password.errors }}
<label for="id_password">Пароль:</label>
{{ form.password }}
</div>
<div class="checkbox">
<label>
<input type="checkbox"> Запомнить
</label>
</div>
<button type="submit" class="btn btn-default">Войти</button>
</form>
2) Ренедрим фому как inclusion_tag:
def login_form(request_path):
return {"form": LoginForm(), "current_url": request_path}
register.inclusion_tag("units/forms/form_signin.djhtml")(login_form)
3) Обрабатываем форму
def auth_login(request):
"""
:param request:
:return:
"""
if request.method == "POST":
form = LoginForm(request.POST)
if form.is_valid():
username = form.cleaned_data['username']
password = form.cleaned_data['password']
user = authenticate(username=username, password=password)
if user is not None:
if user.is_active:
login(request, user)
return HttpResponseRedirect(request.GET.get("next"))
else:
return HttpResponse(u"Ошибка авторизации!")
return HttpResponseRedirect(request.GET.get("next"))
Но, как вы понимаете, валидация работать не будет(. К сожалению, я не нашел адекватного способа базовыми средствами решить данную проблему. Буду писать отдельные шаблоны - тогда все встанет на свои места).
Исправление djnoob, :
Скорее всего так и прийдется сделать - реализовать отдельные шаблоны для входа, регистрации, восстановления пароля. Но вдруг, ежели кто-то захочет, может воспользоваться следующими костылями:
0) Создаем экземпляр класса Form:
class LoginForm(forms.Form):
username = forms.CharField(
label=u'Имя пользователя', min_length=3, max_length=32,
widget=forms.TextInput(attrs={'class': 'form-control'})
)
password = forms.CharField(
label=u'Пароль', min_length=6, max_length=32,
widget=forms.PasswordInput(attrs={'class': 'form-control'}),
)
1) Определяем шаблон формы:
<form action="{% url "accounts:login" %}?next={{ current_url }}" method="POST">
{% csrf_token %}
<div class="form-group">
{{ form.username.errors }}
<label for="id_username">Имя пользователя:</label>
{{ form.username }}
</div>
<div class="form-group">
{{ form.password.errors }}
<label for="id_password">Пароль:</label>
{{ form.password }}
</div>
{{ request }}
<div class="checkbox">
<label>
<input type="checkbox"> Запомнить
</label>
</div>
<button type="submit" class="btn btn-default">Войти</button>
</form>
2) Ренедрим фому как inclusion_tag:
def login_form(request_path):
return {"form": LoginForm(), "current_url": request_path}
register.inclusion_tag("units/forms/form_signin.djhtml")(login_form)
3) Обрабатываем форму
def auth_login(request):
"""
:param request:
:return:
"""
if request.method == "POST":
form = LoginForm(request.POST)
if form.is_valid():
username = form.cleaned_data['username']
password = form.cleaned_data['password']
user = authenticate(username=username, password=password)
if user is not None:
if user.is_active:
login(request, user)
return HttpResponseRedirect(request.GET.get("next"))
else:
return HttpResponse(u"Ошибка авторизации!")
return HttpResponseRedirect(request.GET.get("next"))
Но, как вы понимаете, валидация работать не будет(. К сожалению, я не нашел адекватного способа базовыми средствами решить данную проблему. Буду писать отдельные шаблоны - тогда все встанет на свои места).
Исходная версия djnoob, :
Скорее всего так и прийдется сделать - реализовать отдельные шаблоны для входа, регистрации, восстановления пароля. Но вдруг, ежели кто-то захочет может воспользоваться следующими костылями:
0) Создаем экземпляр класса Form:
class LoginForm(forms.Form):
username = forms.CharField(
label=u'Имя пользователя', min_length=3, max_length=32,
widget=forms.TextInput(attrs={'class': 'form-control'})
)
password = forms.CharField(
label=u'Пароль', min_length=6, max_length=32,
widget=forms.PasswordInput(attrs={'class': 'form-control'}),
)
1) Определяем шаблон формы:
<form action="{% url "accounts:login" %}?next={{ current_url }}" method="POST">
{% csrf_token %}
<div class="form-group">
{{ form.username.errors }}
<label for="id_username">Имя пользователя:</label>
{{ form.username }}
</div>
<div class="form-group">
{{ form.password.errors }}
<label for="id_password">Пароль:</label>
{{ form.password }}
</div>
{{ request }}
<div class="checkbox">
<label>
<input type="checkbox"> Запомнить
</label>
</div>
<button type="submit" class="btn btn-default">Войти</button>
</form>
2) Ренедрим фому как inclusion_tag:
def login_form(request_path):
return {"form": LoginForm(), "current_url": request_path}
register.inclusion_tag("units/forms/form_signin.djhtml")(login_form)
3) Обрабатываем форму
def auth_login(request):
"""
:param request:
:return:
"""
if request.method == "POST":
form = LoginForm(request.POST)
if form.is_valid():
username = form.cleaned_data['username']
password = form.cleaned_data['password']
user = authenticate(username=username, password=password)
if user is not None:
if user.is_active:
login(request, user)
return HttpResponseRedirect(request.GET.get("next"))
else:
return HttpResponse(u"Ошибка авторизации!")
return HttpResponseRedirect(request.GET.get("next"))
Но, как вы понимаете, валидация работать не будет(. К сожалению, я не нашел адекватного способа базовыми средствами решить данную проблему. Буду писать отдельные шаблоны - тогда все встанет на свои места).