所以,现在我正在做基本的登录。在urls.py中,我转到django contrib登录:
(r'^login/?$','django.contrib.auth.views.login',{'template_name':'login.html'}),
射向这里:
@csrf_protect
@never_cache
def login(request, template_name='registration/login.html',
redirect_field_name=REDIRECT_FIELD_NAME,
authentication_form=AuthenticationForm):
该视图使用AuthenticationForm表单模型:
class AuthenticationForm(forms.Form):
"""
Base class for authenticating users. Extend this to get a form that accepts
username/password logins.
"""
username = forms.CharField(label=_("Username"), max_length=30)
password = forms.CharField(label=_("Password"), widget=forms.PasswordInput)
所以…我的目标是更改用户名表单!把这个加到上面:widget = forms.TextInput(attrs={'placeholder': 'username'})
。就这样。这就是我想添加到用户名输入框中的所有内容。但是,我不想更改实际的django forms.py文件,因为这是django contrib的一部分,更改该文件我感觉很糟糕。
我该怎么办?是否应创建扩展AuthenticationForm的窗体?如果是,如何导入?如何通过url.py将其作为参数传入?我不知道该怎么办。
下面是另一个解决方案,使用
path
而不是不推荐的url
,创建页面和表单的自定义版本,以便在完成电子邮件中发送的链接后重置密码。我正在使用Django 2和Python 3。在我的api应用程序文件夹中,我创建了一个包含三个文件的文件夹templates/account。
基本.html:
密码重置完成.html:
密码重置确认.html:
在我的api应用程序文件夹中,我为自定义表单创建了一个文件forms.py,它扩展了默认的SetPasswordForm表单。
forms.py格式:
最后是url.py:
注意“from.forms import SetPasswordFormCustom”。这个。允许导入同一文件夹中的文件。
我之所以这么做,是因为我还没有在本地React frontend中使用reset password,所以我必须为这个函数使用Django模板。我希望能够重新设计它的风格,并有与我的应用程序尽可能适合的链接。但是这个方法通常应该允许您创建自己的Django auth表单的自定义版本。
您需要对
AuthenticationForm
类进行子类划分,然后需要更改urls.py
然后将这个类导入到
urls.py
文件中并更新调用我太累了,无法在文档站点上查找链接来查看您需要使用的字段类型,但这应该可以帮助您在不必修改django
forms.py
的情况下开始使用,而您肯定会对更改djangoforms.py
感到遗憾!正如milkypostman所说,您需要创建auth.forms.AuthenticationForm的子类。
然后,可以使用django crispy表单将占位符放入所需的字段中。就这么简单:
(app/forms.py)
最后,不要忘记在模板中使用crispy标记:
相关问题 更多 >
编程相关推荐