【问题标题】:django admin specific redirectsdjango 管理员特定重定向
【发布时间】:2022-01-07 09:14:28
【问题描述】:

我有一个 Django 网站,其中所有 url 都指向管理员,如下所示:

urls.py(根)

from django.contrib import admin
from django.urls import path

urlpatterns = [
    path('', admin.site.urls),
]

我想知道如何进行从一个网址到另一个网址的特定重定向,因为我只有一个模型要管理和一个应用程序:

localhost/ => 本地主机/应用程序/计算机

localhost/app/ => localhost/app/计算机

我尝试将它添加到 urls.py 但它不起作用:

from django.http import HttpResponseRedirect

path('/', lambda request: HttpResponseRedirect('/app/computer/'))

我也想过将urls.py 添加到应用程序,但我认为可能存在冲突,因为path('') 将同时出现在urls.py、根和应用程序上

【问题讨论】:

    标签: python django redirect django-admin


    【解决方案1】:

    我能够通过使用自定义 RedirectMiddleware 来实现这一点

    settings.py

    ...
    MIDDLEWARE = [
        ...
        'app.middleware.RedirectMiddleware',
    ]
    ...
    ROUTES = [
        {'source': '/', 'destination': '/app/computer/'},
        {'source': '/app/', 'destination': '/app/computer/'}
    ]
    

    middleware.py

    from django.conf import settings
    from django.shortcuts import redirect
    
    def RedirectMiddleware(get_response):
    
        def middleware(request):
            response = get_response(request)
            path = request.path
            for route in settings.ROUTES:
                source = route['source']
                destination = route['destination']
                if path == source:
                    return redirect(destination)
            return response
    
        return middleware
    

    肯定不是最好的,但它现在有效,任何更好的建议将不胜感激。

    【讨论】:

      猜你喜欢
      • 2012-04-18
      • 2013-11-15
      • 1970-01-01
      • 2012-09-10
      • 1970-01-01
      • 1970-01-01
      • 2012-04-30
      • 2013-07-01
      • 2021-03-24
      相关资源
      最近更新 更多