我正在按照本教程进行Django登录: https://wsvincent.com/django-user-authentication-tutorial-login-and-logout/
以下是使用django auth启用登录的代码:
urls.py:
from django.contrib import admin
from django.urls import path, include
from django.views.generic.base import TemplateView
urlpatterns = [
path('admin/', admin.site.urls),
path('customers/', include('django.contrib.auth.urls')),]
并创建了一个template / registration / login.html模板
我想在登录页面中添加占位符字符串以输入用户名和密码。
我尝试将AuthenticationForm子类化(建议在这里Django adding placeholders to django built in login forms),但是我不确定如何在urls.py中进行更改。我不想影响Django随附的其他形式,例如auth password_change等。
请注意,我正在使用Django 2.1.5和python 3.6
编辑:
我进行了以下更改,但没有任何影响:
在customers / forms.py中
from django import forms
from django.contrib.auth.forms import AuthenticationForm
class CustomAuthForm(AuthenticationForm):
username = forms.CharField(widget=forms.TextInput(attrs={'class':'validate','placeholder': 'Your Username'}))
password = forms.CharField(widget=forms.PasswordInput(attrs={'placeholder':'Password'}))
在urls.py
中from django.contrib.auth import views as auth_views
from customers.forms import CustomAuthForm
urlpatterns = [
path('admin/', admin.site.urls),
path('customers/login/', auth_views.LoginView.as_view(), kwargs = {"authentication_form":CustomAuthForm}),
path('customers/', include('django.contrib.auth.urls')),]
我在登录表单文本区域中看不到“您的用户名”和“密码”字符串。
固定的修改
我更改了urls.py并成功了
path('customers/login/', auth_views.LoginView.as_view(
template_name='registration/login.html', authentication_form=CustomAuthForm)),
答案 0 :(得分:0)
在您的 project/settings.py
中,导航到TEMPLATES
并将'DIRS'
设置为[os.path.join(BASE_DIR, 'templates')]
。这样,您告诉Django从此文件夹(如果有)而不是virtualenv加载其模板。
编辑:尝试将forms.TextInput
更改为forms.widgets.TextInput
,因为它是在 django.forms.widgets 中定义的类。对PasswordInput
做同样的事情。
答案 1 :(得分:0)
class CustomAuthForm(AuthenticationForm):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.fields['username'].widget.attrs.update({
'placeholder':'your place holder'})
# same for the placeholder of passsword.