Как изменить метку AuthenticationForm, вызываемой в LoginView, и как использовать другую форму в LoginView? (Django 3,0) - PullRequest
0 голосов
/ 04 апреля 2020

Я учусь 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

Это все еще не работает. Я делаю это неправильно?

1 Ответ

0 голосов
/ 04 апреля 2020

Да, возможно изменить метки, но это будет в файле forms.py, вот пример

class ChildForm(forms.ModelForm):
    class Meta:
        model=Child_detail
        fields="__all__"
        labels={
            'username':'foo',
            'passowrd':'bar',
        }


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