当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《如何在Django中自定义默认身份验证登录表单?》经验,为你挑选了2个好方法。

如何在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

{% csrf_token %} {{ form.as_p }}

上面的代码有效,但是我需要自定义{{form.as_p}},该表格在哪里或可以覆盖?谢谢您的帮助。



1> Nakul Naraya..:

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

像这样

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'
)
]

另外,您可以覆盖登录模板

并根据需要自定义模板

{{ form.non_field_errors }}
{{ form.username }} {{ form.username.errors }}
{{ form.password }} {{ form.password.errors }}



2> Devang Padhi..:

您可以通过覆盖/编辑以下模板/registration/login.html来自定义表单呈现。

仅举例来说,您可以根据需要更改css样式和格式。

Login

{{ form.non_field_errors }}
{{ form.username.errors }} {{ form.username }}
{{ form.password.errors }} {{ form.password }}

您也可以遍历表单的字段

Login

{% for field in form %}
{{ field.errors }} {{ field.label_tag }} {{ field }} {% if field.help_text %}

{{ field.help_text|safe }}

{% endif %}
{% endfor %}

您还可以从此处检查更多表单呈现选项

推荐阅读
ar_wen2402851455
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有