Django adding placeholders to django built in login forms

后端 未结 5 552
灰色年华
灰色年华 2021-01-06 03:13

I\'m using django built-in login forms and i want to add placeholders to username and password.

My template:

<
相关标签:
5条回答
  • 2021-01-06 03:45

    Yes you can add placeholder something like this,

    class LoginForm(forms.ModelForm):
        class Meta:
            model = YourModelName
            widgets = {
                'username' : forms.TextInput(attrs = {'placeholder': 'Username'}),
                'password' : forms.PasswordInput(attrs = {'placeholder': 'Password'}),
            }
    

    I hope this will work for you.

    0 讨论(0)
  • 2021-01-06 03:49

    You can add another filter

    @register.filter(name="add_place_holder")
    def add_place_holder(field, place_holder=None):
        if place_holder == None:
            return field
        else:
            field.field.widget.attrs.update({'placeholder': place_holder})
            return field
    
    0 讨论(0)
  • 2021-01-06 03:52

    save this content in 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
    

    and save this content in 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'),
       ...
    ]
    

    please refer this site: https://github.com/django/django/blob/master/django/contrib/auth/views.py

    0 讨论(0)
  • 2021-01-06 04:01

    save this content in 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'}))
    

    in your main urls.py (where your login view called)

    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}),
    ]
    

    the extra thing that we done here is added an kwargs kwargs={"authentication_form":CustomAuthForm}

    please use this for your future reference django.contrib.auth.views.LoginView and django.contrib.auth.forms.AuthenticationForm

    0 讨论(0)
  • 2021-01-06 04:06

    In response to your comment on the other answer. You can subclass the the Authentication form.

    from django import forms
    from django.contrib.auth.forms import AuthenticationForm
    from django.forms.widgets import PasswordInput, TextInput
    
    class PlaceholderAuthForm(AuthenticationForm):
        username = forms.CharField(widget=TextInput(attrs={'placeholder': 'Email'}))
        password = forms.CharField(widget=PasswordInput(attrs={'placeholder':'Password'}))
    

    or see the other function that was put in this question. --> How can I override the django AuthenticationForm input css class?

    0 讨论(0)
提交回复
热议问题