我有一些长时间运行的过程,在此期间,我想将所有管理员网址指向某个“流程正在运行,请稍后再回来”模板。
在我的urls.py中我有:
url(r'^admin/', include(admin_site.urls)),
我知道我可以创建一个视图,在其中我可以检查我的进程是否正在运行,但我不知道如何在我的视图中使用include(admin_site.urls)
。
答案 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')),
)