我对django相当陌生,到目前为止,我所做的所有工作都是关于模型/视图/视图集的。我正在研究的站点结合了django allauth进行身份验证。我已经成功地编辑/设置了登录/注销模板的样式,但是该页面将由在admin部分中创建的具有凭据的人员访问,而无需自己进行注册-因此无需注册页面。我只想在有人登陆注册页面时显示404页面。我已经从其他模板中删除了指向注册页面的所有链接。
简而言之,当他们打到/ accounts / signup /时,我如何将其重定向到django默认page_not_found?
到目前为止,我的尝试一直围绕着编辑urls.py文件,以使其包含诸如path('account_signup', page_not_found)
之类的内容(在顶部将其导入后),或对该行进行一些其他操作。我可能会错过一些非常容易的事情,因为我感到有些沮丧……而且当用户导航到allauth帐户页面之一时,我并没有发现有人想要404的任何堆栈溢出。
您根本无法在网址中使用注册页面。
另一方面,使用createsuperuser创建用户是一种不好的做法,因为默认情况下,他们将具有足够的特权,甚至可以登录以管理和编辑内容。正确的做法是使用所需的某种方法并授予您的权限来创建用户。
这最后一个将允许您在注册视图中使用装饰器,该装饰器仅在您拥有具有特定特权的帐户(而不是任何用户)的情况下才允许访问该页面。返回404没有意义。
为了自动为未找到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,它就不可见,