Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python DJANGO:如何允许用户更改密码?_Python_Django_Passwords_Django Templates_Authentication - Fatal编程技术网

Python DJANGO:如何允许用户更改密码?

Python DJANGO:如何允许用户更改密码?,python,django,passwords,django-templates,authentication,Python,Django,Passwords,Django Templates,Authentication,所以我有用户(来自django.contrib.auth.models导入用户)和用户配置文件。在我的UserProfile视图中有一个编辑链接。此编辑链接允许用户更改其用户设置。在表单的密码部分,我看到了帮助文本,上面写着: "Use '[algo]$[salt]$[hexdigest]' or use the change password form." “更改密码表单”实际上是指向的链接,当我单击该链接时,会收到一条错误消息,上面说: ViewDoesNotExist at /user

所以我有用户(来自django.contrib.auth.models导入用户)和用户配置文件。在我的UserProfile视图中有一个编辑链接。此编辑链接允许用户更改其用户设置。在表单的密码部分,我看到了帮助文本,上面写着:

"Use '[algo]$[salt]$[hexdigest]' or use the change password form." 
“更改密码表单”实际上是指向的链接,当我单击该链接时,会收到一条错误消息,上面说:

ViewDoesNotExist at /user/1/user_edit/password/

Could not import testdb.views.django.contrib.auth.views. Error was: No module named django.contrib.auth.views
我一直在遵循文档:

我做错了什么?我听说这应该使用djangos模板,我需要将它们复制到我的应用程序模板文件夹吗?如果是,它们在哪里

url.PY

from django.conf.urls.defaults import patterns, include, url
from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('testdb.views',
url(r'^$', 'index'),
url(r'^^user/(?P<user_id>\d+)/$', 'user_detail'),
url(r'^user/(?P<user_id>\d+)/user_edit/$', 'user_edit'),
url(r'^user/(?P<user_id>\d+)/user_edit/password/$', 'django.contrib.auth.views.password_change', {'template_name': 'password_change_form'}),
)
来自django.conf.url.defaults导入模式,包括url
从django.contrib导入管理
admin.autodiscover()
urlpatterns=patterns('testdb.views',
url(r’^$,“索引”),
url(r'^^user/(?P\d+/$,'user_detail'),
url(r'^user/(?P\d+)/user\u edit/$,'user\u edit'),
url(r“^user/(?P\d+)/user\u edit/password/$”、“django.contrib.auth.views.password\u change”、{'template\u name':'password\u change\u form}),
)

您定义了一个错误的URL模式:Django在
模式('testdb.views',
中定义密码更改视图时,试图查找
testdb.views.Django.contrib.auth.views

添加第二个模式:

urlpatterns += patterns('django.contrib.auth.views',
  url(r'^user/(?P<user_id>\d+)/user_edit/password/$', 'password_change')
)
urlpatterns+=patterns('django.contrib.auth.views',
url(r“^user/(?P\d+)/user\u edit/password/$”,“password\u change”)
)

这应该可以解决您的问题。

cfedermann对您的问题有一个解决方案,但我不明白为什么您首先定义了密码更改URL。此功能是内置于管理员的,并且-与所有其他管理员页面一样-URL已经由管理员代码本身定义。

您可以发布完整的URL.py吗?我知道了吗导入的django.contrib.auth.views.password\u change?我从django.contrib.auth.views导入了myviews.py中的导入*,我更新了我的URL.py如果您将视图作为字符串引用,则不需要导入。如果可以正常工作,我会收到一个错误,说password\u change()得到了一个意外的关键字参数“user\u id”,这是由于“(?P\d+”引起的您的模式位;重命名它以匹配密码更改()签名…即删除它。将url定义为“url(r'^user/(?P\d+)/user\u edit/password/$,'password\u change')”?我这样做是因为我的编辑用户/用户配置文件表单中的密码字段使用该url。这是为了您自己的视图,在管理员之外?在这种情况下,我认为问题在于您的URLconf覆盖了contrib.auth中定义的url,因此管理员试图链接到您的url,而不是内置的url。请尝试更改您自己的url的名称。是的s在管理员之外。因此此系统的用户可以更改自己的密码。对不起,我是django/python新手。如何更改名称?我真正想做的是创建一个允许用户更改密码的表单。是否有更简单/正确的方法?我是否应该创建一个用于提交新密码的自定义表单?这对我仍然不起作用。好吧,你也可以激活管理员后端,允许用户在那里更改密码。。。