Django在django中添加占位符,内置登录表单

ale*_*lex 2 python django django-forms

我正在使用django内置登录表单,我想将占位符添加到用户名和密码.

我的模板:

<div class="form-group">
    <div class="col-md-12">
        {{ form.username|add_class:'form-control' }}
    </div>
</div>
<div class="form-group">
    <div class="col-md-12">
        {{ form.password|add_class:'form-control' }}
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

Tha*_*eem 8

保存此内容 forms.py

from django import forms
from django.contrib.auth.forms import AuthenticationForm
from django.forms.widgets import PasswordInput, TextInput


class CustomAuthForm(AuthenticationForm):
    username = forms.CharField(widget=TextInput(attrs={'class':'validate','placeholder': 'Email'}))
    password = forms.CharField(widget=PasswordInput(attrs={'placeholder':'Password'}))
Run Code Online (Sandbox Code Playgroud)

在你的主urls.py(你的登录视图调用)

from django.contrib.auth import views as auth_views
from app.forms import CustomAuthForm

urlpatterns = [
url(r'^login/$', auth_views.login, name='login', kwargs={"authentication_form":CustomAuthForm}),
]
Run Code Online (Sandbox Code Playgroud)

我们在这里做的额外事情是添加一个kwargs kwargs={"authentication_form":CustomAuthForm}

请使用它以备将来参考 django.contrib.auth.views.LoginViewdjango.contrib.auth.forms.AuthenticationForm

  • 另一种使用 ClassBasedViews 设置 urls.py 的方法是 url(r'^login/', auth_views.LoginView.as_view(authentication_form=CustomForm), name='login')` (2认同)

Pus*_*hah 6

将此内容保存在 forms.py

from django import forms
from django.contrib.auth.forms import AuthenticationForm
from django.forms.widgets import PasswordInput, TextInput


class MyAuthForm(AuthenticationForm):
    class Meta:
        model = User
        fields = ['username','password']
    def __init__(self, *args, **kwargs):
        super(MyAuthForm, self).__init__(*args, **kwargs)
        self.fields['username'].widget = forms.TextInput(attrs={'class': 'form-control', 'placeholder': 'Username'})
        self.fields['username'].label = False
        self.fields['password'].widget = forms.PasswordInput(attrs={'class': 'form-control', 'placeholder':'Password'}) 
        self.fields['password'].label = False
Run Code Online (Sandbox Code Playgroud)

并将此内容保存在 main urls.py

from users.forms import MyAuthForm

urlpatterns = [
   ...
   path('', auth_views.LoginView.as_view(template_name='users/login.html', authentication_form=MyAuthForm), name='login'),
   ...
]
Run Code Online (Sandbox Code Playgroud)

请参考这个网站:https : //github.com/django/django/blob/master/django/contrib/auth/views.py