簡體   English   中英

改變Django的ROOT_URLCONF

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM