问题描述
如何使用 allauth django 编辑登录/注册页面的样式,当我打开 forms.py 文件时,它不知道如何编辑样式和添加引导程序
我尝试编辑登录 html 页面,但我无能为力,因为它就像这样
<form class="login" method="POST" action="{% url 'account_login' %}">
{% csrf_token %}
{{ form.as_p }}
{% if redirect_field_value %}
<input type="hidden" name="{{ redirect_field_name }}" value="{{ redirect_field_value }}" />
{% endif %}
</form>
来自allauth的forms.py:
class LoginForm(forms.Form):
password = PasswordField(label=_("Password"),autocomplete="current-password")
remember = forms.BooleanField(label=_("Remember Me"),required=False)
user = None
error_messages = {
"account_inactive": _("This account is currently inactive."),"email_password_mismatch": _(
"The e-mail address and/or password you specified are not correct."
),"username_password_mismatch": _(
"The username and/or password you specified are not correct."
),}
def __init__(self,*args,**kwargs):
self.request = kwargs.pop("request",None)
super(LoginForm,self).__init__(*args,**kwargs)
if app_settings.AUTHENTICATION_METHOD == AuthenticationMethod.EMAIL:
login_widget = forms.TextInput(
attrs={
"type": "email","placeholder": _("E-mail address"),"autocomplete": "email",}
)
login_field = forms.EmailField(label=_("E-mail"),widget=login_widget)
elif app_settings.AUTHENTICATION_METHOD == AuthenticationMethod.USERNAME:
login_widget = forms.TextInput(
attrs={"placeholder": _("Username"),"autocomplete": "username"}
)
login_field = forms.CharField(
label=_("Username"),widget=login_widget,max_length=get_username_max_length(),)
else:
assert (
app_settings.AUTHENTICATION_METHOD
== AuthenticationMethod.USERNAME_EMAIL
)
login_widget = forms.TextInput(
attrs={"placeholder": _("Username or e-mail"),"autocomplete": "email"}
)
login_field = forms.CharField(
label=pgettext("field label","Login"),widget=login_widget
)
self.fields["login"] = login_field
set_form_field_order(self,["login","password","remember"])
if app_settings.SESSION_REMEMBER is not None:
del self.fields["remember"]
def user_credentials(self):
"""
Provides the credentials required to authenticate the user for
login.
"""
credentials = {}
login = self.cleaned_data["login"]
if app_settings.AUTHENTICATION_METHOD == AuthenticationMethod.EMAIL:
credentials["email"] = login
elif app_settings.AUTHENTICATION_METHOD == AuthenticationMethod.USERNAME:
credentials["username"] = login
else:
if self._is_login_email(login):
credentials["email"] = login
credentials["username"] = login
credentials["password"] = self.cleaned_data["password"]
return credentials
def clean_login(self):
login = self.cleaned_data["login"]
return login.strip()
def _is_login_email(self,login):
try:
validators.validate_email(login)
ret = True
except exceptions.ValidationError:
ret = False
return ret
def clean(self):
super(LoginForm,self).clean()
if self._errors:
return
credentials = self.user_credentials()
user = get_adapter(self.request).authenticate(self.request,**credentials)
if user:
self.user = user
else:
auth_method = app_settings.AUTHENTICATION_METHOD
if auth_method == app_settings.AuthenticationMethod.USERNAME_EMAIL:
login = self.cleaned_data["login"]
if self._is_login_email(login):
auth_method = app_settings.AuthenticationMethod.EMAIL
else:
auth_method = app_settings.AuthenticationMethod.USERNAME
raise forms.ValidationError(
self.error_messages["%s_password_mismatch" % auth_method]
)
return self.cleaned_data
def login(self,request,redirect_url=None):
email = self.user_credentials().get("email")
ret = perform_login(
request,self.user,email_verification=app_settings.EMAIL_VERIFICATION,redirect_url=redirect_url,email=email,)
remember = app_settings.SESSION_REMEMBER
if remember is None:
remember = self.cleaned_data["remember"]
if remember:
request.session.set_expiry(app_settings.SESSION_COOKIE_AGE)
else:
request.session.set_expiry(0)
return ret
任何帮助或指导帮助我编辑样式
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)