【问题标题】:Django 1.9, custom middleware + 404 errorDjango 1.9,自定义中间件 + 404 错误
【发布时间】:2016-11-23 08:33:57
【问题描述】:

我编写了自定义中间件来检查来自用户的邀请。这个想法是限制没有邀请的用户访问网站。一切都很好,除了当 404 或任何其他异常发生并且我不想要它时用户可以看到网站的某些部分。

我正在使用 Django 1.9。在以前的版本中(我记得)有异常中间件,但现在我看不到它。我试图将我的中间件放在堆栈的顶部,但它没有帮助。我还可以做些什么?

可以说,我有以下中间件:

MIDDLEWARE_CLASSES = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'myproject.middleware.InviteLoginForWebsiteMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
    'django.middleware.locale.LocaleMiddleware',
]

这是我重定向到处理程序的网址:

urlpatterns = [

    url(r'^403/$', views.handler403, name="403"),
    url(r'^404/$', views.handler404, name="404"),
    url(r'^500/$', views.handler500, name="500"),

]

谢谢!

【问题讨论】:

  • 你是什么意思,“当 404 发生时,用户可以看到网站的某些部分”。只有将网站的一部分放在 404 页面中才会发生这种情况。
  • 我的意思是我的处理程序重定向到显示部分网站界面的视图。而且我想拥有完全限制对接口的访问的中间件。
  • 你需要展示一些代码。
  • 好的,我会发布它,但不要认为代码在这种情况下会有很大帮助
  • @RemcoGerlich 是的,我希望在正常情况下发生 404 错误时显示网站的某些部分,但当用户没有整个网站的邀请时则不显示

标签: python django middleware


【解决方案1】:

我已经通过在我的自定义中间件中使用 process_request() 而不是 process_view() 解决了这个问题。谢谢大家!

【讨论】:

    猜你喜欢
    • 2012-07-03
    • 2016-09-27
    • 1970-01-01
    • 2014-04-07
    • 2018-05-18
    • 2013-07-13
    • 1970-01-01
    • 1970-01-01
    • 2016-04-17
    相关资源
    最近更新 更多