3 回答

TA貢獻1895條經(jīng)驗 獲得超3個贊
您可以覆蓋默認(rèn)的身份驗證表單
像這樣
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'
)
]
此外,您可以覆蓋登錄模板
并根據(jù)您的要求自定義模板
<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>

TA貢獻1839條經(jīng)驗 獲得超15個贊
您可以通過覆蓋/編輯templates/registration/login.html來自定義您的表單呈現(xiàn),如下所示。
例如,只有您可以根據(jù)需要更改 css 樣式和格式。
<h2>Login</h2>
<form method="post">
{{ form.non_field_errors }}
<div class="fieldWrapper">
{{ form.username.errors }}
<label for="{{ form.username.id_for_label }}">Username:</label>
{{ form.username }}
</div>
<div class="fieldWrapper">
{{ form.password.errors }}
<label for="{{ form.password.id_for_label }}">Password:</label>
{{ form.password }}
</div>
<button type="submit">Login</button>
</form>
您也可以遍歷表單的字段
<h2>Login</h2>
<form method="post">
{% for field in form %}
<div class="fieldWrapper">
{{ field.errors }}
{{ field.label_tag }} {{ field }}
{% if field.help_text %}
<p class="help">{{ field.help_text|safe }}</p>
{% endif %}
</div>
{% endfor %}
<button type="submit">Login</button>
</form>

TA貢獻1875條經(jīng)驗 獲得超5個贊
從問題中,我假設(shè)您想更改 html 模板的外觀而不是 python 表單類。在這種情況下,您需要做的就是包含具有匹配名稱和 ids 屬性的輸入類型字段,這是默認(rèn)的 django-auth 表單所期望的。您可以使用以下步驟實現(xiàn)此目的。
在渲染時渲染模板(使用 {{form.as_p}})。
檢查元素并檢查用戶名、密碼和提交按鈕的名稱和默認(rèn)身份驗證表單生成的 ID。
使用您自己的自定義樣式重新創(chuàng)建相同的標(biāo)簽。
它類似于以下內(nèi)容:
<form method="POST">
{% csrf_token %}
<input type="input" class="form-control" name="username" id="inputEmail" placeholder="Username" required >
<input type="password" class="form-control" name="password" id="inputPass" placeholder="Password" required>
<button type="submit" style="opacity: 1 !important;">Login</button>
<a href="/password_reset">Reset Password</a>
</form>
在此之后,您可以發(fā)揮您的想象力并根據(jù)您的要求設(shè)計登錄表單。
希望這可以幫助。
添加回答
舉報