在 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?

Django - 如何在发送邮件时重定向

使用 Microsoft Graph API 时重定向 URL 地址不正确

django admin 在保存时重定向到错误的端口

Spring Social:当服务器在代理后面时重定向 url

如何仅在确切的 url 匹配时重定向?