1

我有一些长时间运行的进程,在此期间我想将我的所有管理 url 指向一些“进程正在运行,请稍后再回来”模板。

在我的 urls.py 中,我有:

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

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

4

2 回答 2

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')),
    )
于 2012-09-20T21:19:30.810 回答
0

我会写一个中间件。就像是:

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',
)
于 2012-09-20T21:14:26.740 回答