如何更改我的管理员网址动态指向的视图?

时间:2012-09-20 20:36:10

标签: django django-urls

我有一些长时间运行的过程,在此期间,我想将所有管理员网址指向某个“流程正在运行,请稍后再回来”模板。

在我的urls.py中我有:

url(r'^admin/', include(admin_site.urls)),

我知道我可以创建一个视图,在其中我可以检查我的进程是否正在运行,但我不知道如何在我的视图中使用include(admin_site.urls)

2 个答案:

答案 0 :(得分:0)

我会写一个MiddleWare。类似的东西:

from django.http import HttpResponseRedirect

class LongProcessMiddleware(object):

    def process_request(self, request):
        running_long_process = True # some logic
        if running_long_process and request.get_full_path().startswith('/admin'):
            return HttpResponseRedirect('/temporary-disabled-message')
        return None
在settings.py

MIDDLEWARE_CLASSES = (
    ...
    'myproject.middleware.LongProcessMiddleware',
)

答案 1 :(得分:0)

您不需要在视图中使用“include(admin_site.urls)”。 在您的urls.py文件中,检查您的进程是否正在运行,然后添加正确的管理URL。 像这样:

from myapp import CheckIfProcessRunning

process = CheckIfProcessRunning()

if process :
    urlpatterns += patterns('',
        url(r'^admin/', include('myapp.comebacklater')),
    )

else :
    urlpatterns += patterns('',
        url(r'^admin/', include('myapp.myadminurl')),
    )