[python] 사용자가 Django에서 자신의 비밀번호를 변경하도록 허용하는 방법은 무엇입니까?
사용자가 Django에서 자신의 암호를 변경할 수있는 코드를 알려줄 수 있습니까?
답변
Django는 사용자 인증 시스템과 함께 제공됩니다. 사용자 계정, 그룹, 권한 및 쿠키 기반 사용자 세션을 처리합니다. 이 문서는 작동 방식을 설명합니다.
암호 변경 섹션을 참조하십시오.
-
manage.py
파일이있는 프로젝트로 이동 -
$ python manage.py shell
-
아래 스크립트를 입력하십시오.
django.contrib.auth.models에서 사용자 가져 오기 u = User.objects.get (username__exact = 'john') u.set_password ( '새 비밀번호') u.save ()
간단한 manage.py
명령을 사용할 수도 있습니다 .
manage.py changepassword *username*
새 비밀번호를 두 번 입력하면됩니다.
로부터 암호 변경의 워드 프로세서 섹션을 참조하십시오.
당신이있는 경우 django.contrib.admin
당신의 INSTALLED_APPS
, 당신은 방문 할 수 있습니다 : example.com/path-to-admin/password_change/
이전 암호를 확인하고 새 암호를 두 번 입력 할 수있는 형태를 가질 것이다.
답변
django.contrib.auth.views.password_change
URLconf 에서 보기를 사용할 수도 있습니다 . 기본 양식과 템플릿을 사용합니다. 자신을 제공하는 것은 선택 사항입니다.
답변
쉘로 이동할 필요없이 passwd를 입력하고 passwd를 다시 입력합니다.
python manage.py changepassword <username>
or
/manage.py changepassword <username>
쉘 사용
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()
답변
urls.py
:
urlpatterns = [
url(r'^accounts/', include('django.contrib.auth.urls')),
주형:
<a href="{% url 'password_change' %}">{% trans "Change password" %}</a>
문서화 : https://docs.djangoproject.com/en/1.9/topics/auth/default/#using-the-views
답변
이 튜토리얼 에서는 함수 기반 뷰로 수행하는 방법을 보여줍니다.
파일보기:
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
})
URL 파일 :
from django.conf.urls import url
from myproject.accounts import views
urlpatterns = [
url(r'^password/$', views.change_password, name='change_password'),
]
마지막으로 템플릿 :
<form method="post">
{% csrf_token %}
{{ form }}
<button type="submit">Save changes</button>
</form>
답변
Ciro Santilli의 답변에 표시된대로 URL 패턴이 추가되면 사용자가 암호를 변경할 수있는 빠른 방법은 관리자 기능에 대한 “직원 액세스”를 제공하는 것입니다. 그룹에 추가하지 않거나 특별한 권한을 부여하지 않아도 example.com/admin 페이지로 이동하여 비밀번호를 변경할 수 있습니다. 직원 액세스를 사용하면 비어있는 경우에도 페이지로 이동할 수 있습니다. 오른쪽 상단에서 “비밀번호 변경”을 클릭하고 관리자 기능을 사용할 수 있습니다.
답변
이것은 내가 사용한 명령 AttributeError: Manager isn't available; 'auth.User' has been swapped for 'users.User'
입니다.
python manage.py shell -c "from django.contrib.auth import get_user_model;
User = get_user_model();
u = User.objects.get(username='admin');
u.set_password('password123');
u.save()"