Sve*_*lov 143
Django带有用户身份验证系统.它处理用户帐户,组,权限和基于cookie的用户会话.本文档解释了工作原理.
请参阅更改密码部分
导航到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()
您也可以使用简单manage.py
命令:
manage.py changepassword *username*
只需输入两次新密码即可.
来自文档中的更改密码部分.
如果你有django.contrib.admin
你的INSTALLED_APPS
,你可以访问:example.com/path-to-admin/password_change/
这将有一个表格,以确认您的旧密码,然后输入两次新密码.
它不需要去shell输入passwd并重新输入passwd
python manage.py changepassword <username>
or
/manage.py changepassword <username>
Run Code Online (Sandbox Code Playgroud)
使用外壳
python manage.py shell
from django.contrib.auth.models import User
users=User.objects.filter(email='<user_email>')
#you can user username or etc to get users query set
#you can also use get method to get users
user=users[0]
user.set_password('__enter passwd__')
user.save()
exit()
Run Code Online (Sandbox Code Playgroud)
本教程展示了如何使用基于函数的视图来做到这一点:
查看文件:
from django.contrib import messages
from django.contrib.auth import update_session_auth_hash
from django.contrib.auth.forms import PasswordChangeForm
from django.shortcuts import render, redirect
def change_password(request):
if request.method == 'POST':
form = PasswordChangeForm(request.user, request.POST)
if form.is_valid():
user = form.save()
update_session_auth_hash(request, user) # Important!
messages.success(request, 'Your password was successfully updated!')
return redirect('change_password')
else:
messages.error(request, 'Please correct the error below.')
else:
form = PasswordChangeForm(request.user)
return render(request, 'accounts/change_password.html', {
'form': form
})
Run Code Online (Sandbox Code Playgroud)
网址文件:
from django.conf.urls import url
from myproject.accounts import views
urlpatterns = [
url(r'^password/$', views.change_password, name='change_password'),
]
Run Code Online (Sandbox Code Playgroud)
最后,模板:
<form method="post">
{% csrf_token %}
{{ form }}
<button type="submit">Save changes</button>
</form>
Run Code Online (Sandbox Code Playgroud)