在 Django 中接受垃圾 url 时重定向到登录页面
Posted
技术标签:
【中文标题】在 Django 中接受垃圾 url 时重定向到登录页面【英文标题】:Redirect to login page on accepting a garbage url in Django 【发布时间】:2019-02-10 21:42:59 【问题描述】:所以我是 Django 的新手,我正在制作一个名为 accounts 的 webapp。我想在我的 urlpatterns 中有一个路径方法,每当我输入其他路径方法中未提及的 url 时,它就会将我发送到登录页面。(注意:我使用了内置登录方法) 如何实施?
urls.py
from django.urls import path, url
from . import views
from django.contrib.auth.views import login, logout
urlpatterns = [
path('display/', views.display),
path('', views.home),
path('login/', login, 'template_name': 'accounts/login.html'),
path('logout/', logout, 'template_name': 'accounts/logout.html'),
path('register/',views.register, name='register'),
url('xxxx', login, 'template_name': 'accounts/login.html') #here, I'd like to change 'xxxx'
]
【问题讨论】:
Redirect any urls to 404.html if not found in urls.py in django的可能重复 【参考方案1】:您只需要在您的views.py
中创建一个条目来处理 404:
from django.shortcuts import render_to_response
from django.template import RequestContext
def handler404(request):
response = render_to_response('your_login_template.html', ,
context_instance=RequestContext(request))
response.status_code = 404
return response
然后在您的urls.py
中指定它:
from django.conf.urls.defaults import handler404, handler500
handler404 = 'views.handler404'
请注意,这仅适用于您的 settings.py
中的 DEBUG=False
。
【讨论】:
好的,那么一旦没有找到匹配的实体,如何将控件从 urls.py 发送到视图? @SachinKukreja 是的,好点,你需要设置 DEBUG=False 才能工作 嗯...这似乎不起作用。我收到了与 ALLOWED HOSTS 相关的错误,我将其修改为 ALLOWED_HOSTS = ['*'] 但它仍然显示找不到页面。我必须导入一个函数还是什么? 尝试将其设置为 localhost(我假设您正在测试的地方),并确保它没有在其他地方重新定义为 [] 到底是什么错误? 找不到页面。但它只是作为一个文本,而不是我们通常拥有的错误处理页面以上是关于在 Django 中接受垃圾 url 时重定向到登录页面的主要内容,如果未能解决你的问题,请参考以下文章
在 Django 中,如何在提交 CreateView 时重定向到 UpdateView?
使用 Microsoft Graph API 时重定向 URL 地址不正确