如何仅为django allauth注册页面返回404?

问题描述 投票:0回答:2

我对django相当陌生,到目前为止,我所做的所有工作都是关于模型/视图/视图集的。我正在研究的站点结合了django allauth进行身份验证。我已经成功地编辑/设置了登录/注销模板的样式,但是该页面将由在admin部分中创建的具有凭据的人员访问,而无需自己进行注册-因此无需注册页面。我只想在有人登陆注册页面时显示404页面。我已经从其他模板中删除了指向注册页面的所有链接。

简而言之,当他们打到/ accounts / signup /时,我如何将其重定向到django默认page_not_found?

到目前为止,我的尝试一直围绕着编辑urls.py文件,以使其包含诸如path('account_signup', page_not_found)之类的内容(在顶部将其导入后),或对该行进行一些其他操作。我可能会错过一些非常容易的事情,因为我感到有些沮丧……而且当用户导航到allauth帐户页面之一时,我并没有发现有人想要404的任何堆栈溢出。

django django-urls allauth
2个回答
0
投票

您根本无法在网址中使用注册页面。

另一方面,使用createsuperuser创建用户是一种不好的做法,因为默认情况下,他们将具有足够的特权,甚至可以登录以管理和编辑内容。正确的做法是使用所需的某种方法并授予您的权限来创建用户。

这最后一个将允许您在注册视图中使用装饰器,该装饰器仅在您拥有具有特定特权的帐户(而不是任何用户)的情况下才允许访问该页面。返回404没有意义。


0
投票

为了自动为未找到url的404页面提供服务器,请创建404视图,然后在主项目中urls.py包含以下代码Read the Official docs

handler404 = 'mysite.views.my_custom_page_not_found_view'

用于重定向时使用Redirect View in django docs

from django.views.generic.base import RedirectView
    url('/accounts/signup/', RedirectView.as_view(url='/', permanent=False),name='index')

请注意,对于使用django构建的开发人员来说,他们的页面是404页,但是一旦在生产应用程序的设置中将debug = False设置为false,它就不可见,

© www.soinside.com 2019 - 2024. All rights reserved.