Может ли кто-нибудь указать мне, где пользователи могут изменять свои собственные пароли в Django?
Как разрешить пользователям изменять свои собственные пароли в Django?
Ответ 1
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/
, который будет иметь форму для подтверждения вашего старого пароля и дважды ввести новый пароль.
Ответ 2
Вы также можете просто использовать представление django.contrib.auth.views.password_change
в вашем URLconf. Он использует форму и шаблон по умолчанию; поставляя свои собственные, является необязательным.
Ответ 3
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
Ответ 4
Без необходимости переходить в оболочку введите 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()
Ответ 5
Очень похоже на @Ciro ответ, но более конкретный для исходного вопроса (без добавления всех видов проверки подлинности):
просто добавьте urlpatterns
в urls.py
:
url('^change-password/$', auth_views.password_change, {'post_change_redirect': 'next_page'}, name='password_change'),
Обратите внимание, что post_change_redirect
указывает URL-адрес для перенаправления после изменения пароля.
Затем просто добавьте в свой шаблон:
<a href="{% url 'password_change' %}">Change Password</a>
Ответ 6
Как только шаблон URL будет добавлен, как показано в ответе Ciro Santilli, быстрый способ разрешить пользователям изменять пароли - это дать им "доступ персонала" для функций администратора. Если вы не добавите их в какие-либо группы или не предоставите им особые разрешения, они все равно смогут изменить свой пароль, перейдя на страницу example.com/admin. Доступ персонала позволяет им перейти на страницу, даже если она пуста; в правом верхнем углу они могут нажать "сменить пароль" и использовать админ-функцию администратора.
Ответ 7
Это команда, которую я использовал, на случай, если у вас возникла проблема с этим броском 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()"