我的python项目的网址在这里:https : //github.com/abylikhsanov/social
我正在尝试实现密码更改表单,以便用户可以更改他或她的密码。我该如何实施?应用程序应跟踪先前的密码,并且不应允许用户使用先前使用的密码。另外,我想实现重置密码功能。
您可以查看以下文档的更改密码部分。如何在 Django 中更改密码。它是这样工作的:
导航到manage.py文件所在的项目
$ python manage.py shell
执行以下操作:
from django.contrib.auth.models import User
u = User.objects.get(username__exact='john')
u.set_password('new password')
u.save()
Run Code Online (Sandbox Code Playgroud)您必须制作一个表单集,并且您将在提交表单时执行此操作。
您还可以使用简单的manage.py命令:
manage.py changepassword *username*
只需输入两次新密码。
对于问题的第二部分(用户不能选择旧密码),您可以创建一个表来存储用户的旧密码。当用户输入新密码时,您可以在该表中检查他是否可以选择它。Django 有一个函数check_password用于比较两个密码。
为什么不使用 django 的内置 PasswordChangeForm (django.contrib.auth.forms)。
如果您喜欢它的工作方式,请使用它,或者您可以创建一个继承 PasswordChangeForm 的新方法
class PasswordChangeCustomForm(PasswordChangeForm):
error_css_class = 'has-error'
error_messages = {'password_incorrect':
"?? ????? ??????????? ??? ????? ?????. ???????????? ????."}
old_password = CharField(required=True, label='???????????',
widget=PasswordInput(attrs={
'class': 'form-control'}),
error_messages={
'required': '?? ??????????? ?? ?????? ?? ????? ????'})
new_password1 = CharField(required=True, label='???????????',
widget=PasswordInput(attrs={
'class': 'form-control'}),
error_messages={
'required': '?? ??????????? ?? ?????? ?? ????? ????'})
new_password2 = CharField(required=True, label='??????????? (???????????)',
widget=PasswordInput(attrs={
'class': 'form-control'}),
error_messages={
'required': '?? ??????????? ?? ?????? ?? ????? ????'})
Run Code Online (Sandbox Code Playgroud)
稍后我将提供 clean 和 save 方法的示例
请参阅此处了解更多详情
| 归档时间: |
|
| 查看次数: |
19523 次 |
| 最近记录: |