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