Я учусь Django 3.0 и на самом деле использую django.contrib.auth.views.LoginView
Вот мой views.py
файл:
from django.contrib.auth.views import LoginView
class CustomLoginView(LoginView):
template_name = "blog/loginview.html"
А вот мой urls.py
file:
from django.contrib.auth.views import LoginView
from django.conf.urls import url
urlpattenrs = [
url(r'^login/$', views.CustomLoginView.as_view(), name='login')
]
Я знаю, что могу поместить все в URL, не создавая своего собственного представления, но я хотел проверить это.
Вот мой шаблон:
<h1>Connection with LoginView</h1>
<form method="POST" action=".">
{% csrf_token %}
{{ form.as_p }}
<input type="hidden" name="next" value="{{ next }}" />
<input type="submit" value="Connect" />
</form>
Все работает отлично, но на моей странице я вижу метки по умолчанию из AuthenticationForm
, используемые по умолчанию LoginView
. Это Username:
и Password:
.
Теперь вот мои вопросы:
Можно ли изменить метки на foo
вместо Username:
и bar
вместо Password:
из шаблона и оставить {{ form.as_p }}
в шаблоне? Или, что еще лучше, изменив метки с CustomLoginView
?
Можно ли использовать пользовательскую форму для CustomLoginView? Или даже лучше, прямо в LoginView?
Спасибо за вашу помощь.
Обновление:
Так вот что я пытался сделать, согласно ответу Реднальда Терри ({ ссылка }):
В своем forms.py
я создал это:
from django.contrib.auth.forms import AuthenticationForm
class CustomAuthenticationForm(AuthenticationForm):
class Meta:
form = AuthenticationForm
fields = "__all__"
labels = {
"username": "foo",
"password": "bar"
}
И в файле y views.py
:
from django.contrib.auth.views import LoginView
from .forms import CustomAuthenticationForm
class CustomLoginView(LoginView):
template_name = "blog/loginview.html"
authentication_form = CustomAuthenticationForm
Это все еще не работает. Я делаю это неправильно?