gpt4 book ai didi

python - 如何在 Django 中自定义默认的身份验证登录表单?

转载 作者:行者123 更新时间:2023-12-02 08:50:03 25 4
gpt4 key购买 nike

如何在 Django 中自定义默认登录表单?

# demo_project/urls.py
from django.contrib import admin
from django.urls import include, path

urlpatterns = [
path('', include('pages.urls')),
path('users/', include('users.urls')), # new
path('users/', include('django.contrib.auth.urls')), # new
path('admin/', admin.site.urls),
]

<!-- templates/registration/login.html -->
<h2>Login</h2>
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">Login</button>
</form>

上面的代码可以工作,但我需要自定义该 {{form.as_p}} 该表单在哪里或者可以覆盖吗?感谢您的帮助。

最佳答案

您可以覆盖默认的身份验证表单

像这样

from django.contrib.auth.forms import AuthenticationForm, UsernameField

from django import forms


class UserLoginForm(AuthenticationForm):
def __init__(self, *args, **kwargs):
super(UserLoginForm, self).__init__(*args, **kwargs)

username = UsernameField(widget=forms.TextInput(
attrs={'class': 'form-control', 'placeholder': '', 'id': 'hello'}))
password = forms.CharField(widget=forms.PasswordInput(
attrs={
'class': 'form-control',
'placeholder': '',
'id': 'hi',
}
))

在 url.py 中,您可以像这样传递此自定义身份验证表单

from django.contrib.auth import views

from myapp.forms import UserLoginForm
urlpatterns = [

path(
'login/',
views.LoginView.as_view(
template_name="login.html",
authentication_form=UserLoginForm
),
name='login'
)
]

此外,您还可以覆盖登录模板

并根据您的要求自定义模板

<form method="post">
{{ form.non_field_errors }}
<div class="form-group">

<label for="{{ form.username.id_for_label }}">Username:</label>
{{ form.username }}
{{ form.username.errors }}

</div>
<div class="form-group">

<label for="{{ form.password.id_for_label }}">Password:</label>
{{ form.password }}
{{ form.password.errors }}
</div>
<button type="submit">Login</button>
</form>

关于python - 如何在 Django 中自定义默认的身份验证登录表单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55369645/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com