如何在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), ]Login
上面的代码有效,但是我需要自定义{{form.as_p}},该表格在哪里或可以覆盖?谢谢您的帮助。
您可以覆盖默认的身份验证表单
像这样
from django.contrib.auth.forms import AuthenticationForm from django import forms class UserLoginForm(AuthenticationForm): def __init__(self, *args, **kwargs): super(UserLoginForm, self).__init__(*args, **kwargs) username = forms.EmailField(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' ) ]
另外,您可以覆盖登录模板
并根据需要自定义模板
您可以通过覆盖/编辑以下模板/registration/login.html来自定义表单呈现。
仅举例来说,您可以根据需要更改css样式和格式。
Login
您也可以遍历表单的字段
Login
您还可以从此处检查更多表单呈现选项