Вы правы. У Django есть свой способ обработки форм, но, к счастью, он полностью настраивается.Допустим, у вас есть LoginForm, который вы хотите показать пользователю:
вам нужно будет создать форму в Django, которая представляет поле.Кроме того, с тех пор форма будет аутентифицировать пользователя в вашей системе django, если учетные данные верны, вы должны будете сделать эту форму наследованной от встроенной в Dhengo формы AuthentificationForm: forms.py:
from django.contrib.auth.forms import AuthenticationForm
class EmailAuthenticationForm(AuthenticationForm):
required_css_class = 'required'
remember_me = forms.BooleanField(
required=False,
label='Remember me for two weeks',
)
def clean_username(self):
"""Prevent case-sensitive erros in email/username."""
return self.cleaned_data['username'].lower()
Далее мы должны предоставить форму пользователю (через html).Поэтому мы создаем представление, которое отображает форму в views.py вашего приложения: views.py:
from forms import EmailAuthentificationForm
def login(request):
if request.method == 'POST':
form = EmailAuthenticationForm(request.POST)
if form.is_valid():
pass # does nothing, just trigger the validation
else:
form = EmailAuthenticationForm()
return render(request, 'login.html', {'form': form})
теперь, чтобы упростить нашу жизнь, django может автоматически визуализировать форму дляВы без какого-либо стиля просто чтобы все заработало.Но так как у нас есть собственный html-макет с нашими собственными стилями, мы хотим отрисовать форму вручную: login.html
<div class="container">
<form method="post" class="form-signin" name="login" action="timesheet" novalidate>
{% csrf_token %}
{{ form.non_field_errors }}
{{ form.source.errors }}
{{ form.source }}
<h1 class="h3 mb-3 font-weight-normal">Sign In</h1>
<label for="inputEmail" class="sr-only">Email address</label>
{{form.email}}
<label for="inputPassword" class="sr-only">Password</label>
{{form.password}}
<div class="checkbox mb-3">
<label>
{{form.remember_me}}
</label>
</div>
<button class="btn btn-lg btn-primary btn-block" type="submit">Sign in</button>
</form>
теперь электронная почтаи поле пароля по-прежнему не будет отображаться со всеми атрибутами css, которые вы хотели бы иметь в полях, чтобы сделать это, вам необходимо добавить дополнительные атрибуты к вашим полям электронной почты и пароля в форме аутентификации.Чтобы узнать, как это сделать, прочитайте больше здесь Чтобы узнать больше о рендеринге вашей собственной пользовательской формы в django, прочитайте здесь