![](/img/trans.png)
[英]Django: Overwrite ROOT_URLCONF with request.urlconf in middleware
[英]Changing Django's ROOT_URLCONF
我們正在建立一個多租戶網站,一些租戶需要不同的URL等。 沒什么大不了的,這是我們已經通過制作多個urls.py來解決的問題,它可以作為ROOT_URLCONF
。 當涉及到請求時,我們只需使用設置request.urlconf
的中間件。 到現在為止還挺好。
但我們也在為一堆夜間任務運行Celery,其中一個就是發送電子郵件。 在這里我們沒有(顯然) request
,所以我們不能用那個方式切換ROOT_URLCONF
。 但是改變django.conf.settings.ROOT_URLCONF
也不起作用(這有點合乎邏輯)。 有沒有辦法切換正在使用的“中間過程”的URLConf?
運行多個Celery實例並不是一個真正的選項,每個實例都有自己的設置,因為並非所有對象都可以有效地鏈接到它們所屬的租戶(視圖不同,我們從知道它的租戶的User
開始)。
你可以使用django.core.urlresolvers.set_urlconf
:
from django.core.urlresolvers import set_urlconf
set_urlconf('module.path.urls')
這就是django.core.handlers.base.BaseHandler.get_response
用於為當前請求設置解析器的內容。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.