django - 未找到重置密码表单页面
问题描述
我在 Django 中构建了一个自定义密码重置,但是,在将信息放入后,'PasswordResetForm'
我得到一个 404 page not found 错误。
这是我的 reset_password 代码:
def reset_password(request,username):
if request.method == 'POST':
form = PasswordResetForm(data=request.POST, user=request.user)
if form.is_valid():
form.save()
update_session_auth_hash(request, form.user)
#added this to redirect user to custom url
username = request.user.username
return redirect(reverse('main:home', kwargs={'username': username}))
#return redirect(reverse('main:home'))
else:
return redirect(reverse('main:reset_password'))
else:
form = PasswordResetForm(user=request.user)
args = {'form': form}
return render(request, 'reset_password.html', args)
我在 myapp/urls.py 的网址
urlpatterns=[
path('signup/',views.signup,name='signup'),
path('login',views.user_login,name='user_login'),
path('',views.main_page,name='main_page'),
path('<str:username>', views.home, name='home'),
#replace home/edit with below
path('<str:username>/edit', views.edit_profile, name='edit_profile'),
path('<str:username>/password-reset', views.reset_password, name='reset_password'),
]
和我的密码重置表格:
class PasswordResetForm(PasswordChangeForm):
class Meta:
model = Profile
fields = ('old_password','new_password1','new_password2')
这里似乎有什么问题?我不知道为什么会收到此错误:
Page not found (404)
Request Method: GET
Request URL: http://127.0.0.1:8000/main/test3-b/login.html?next=/main/test3-b/password-reset
这是我在 models.py 中的 AbstractUser 模型(我的 models.py 中没有任何其他代码
class Profile(AbstractUser):
bio = models.TextField()
university = models.CharField(max_length=30)
def __str__(self):
return self.username
解决方案
您的 urls.py 没有使用与您正在访问的 URL 相同的路径。您给出的 URL 示例是http://127.0.0.1:8000/main/test3-b/login.html但您的密码重置 url 类似于http://127.0.0.1:8000/example-user/password-重置example-user
您尝试在路径中匹配的用户名在哪里。
出于兴趣,您是否在 URL 结构中包含用户名?这通常是不需要的,因为您将使用 request.user 来访问当前用户。当您使用 str 而不是 slug 时,您还面临用户用户名可能会破坏您的模式的风险,这在 URL 模式中更安全,否则 id 用户是使用“example/edit”的用户名创建的,那么他们将永远无法获得到您的主页,因为它会匹配 edit_profile 条目。
推荐阅读
- powershell - 为什么在 powershell 中使用替换运算符时无法对匹配组执行操作?
- symfony4 - 有没有办法在 Sonata Admin 的字段中添加提示
- c# - 统一的 2D PlayerController
- java - 如果其字段不是易失性的,外部同步的 ArrayList 线程是否安全?
- javascript - jQuery手动调用点击功能
- tensorflow - 如何对具有编码图像字符串张量作为输入的张量流模型的输入进行编码
- java - 如何使用 javax.swing.text.AsyncBoxView 将 JTextPane 中的文本布局委托给非 EDT 线程?
- .net - 如何更改 DateTime AM PM 格式?
- android - 使用 Glide 使用 Storage References 中的图像填充 RecycleView
- javascript - 如何在选择输入中设置多个值?