[英]Django changing custom settings at runtime
在我的 settings.py 中有一些自定義設置,我使用的一些數據結構。 這些很少改變。 我注意到從視圖中更改它們是行不通的。 如何強制 django 在運行時重新加載設置文件? 到目前為止,唯一有效的方法是重新啟動 apache Web 服務器。 但我想避免這種情況。
在我的代碼中。 我需要為受保護的(僅限管理員限制)頁面重新發明 @login_required 裝飾器。 這就是我所做的。 在 project/settings.py 我創建了一個名為ACCESS_CP = False
的變量在我導入的 app/views.py
from django.conf import settings
在 def login_form 中
# (if the user is authenticated and the user is an Active Directory Domain Admin)
settings.ACCESS_CP = True
在 def 控制面板中:
if request.method == "GET" and settings.ACCESS_CP == False:
return redirect('login')
elif request.method == "GET" and settings.ACCESS_CP == True:
settings.ACCESS_CP = False
return render(request, 'controlpanel.html')
對於您的應用程序,您可以將配置參數存儲在 redis 或 django 模型中。
這是有用的可重用應用程序https://github.com/jezdez/django-constance
您也可以檢查其他現有的 django 配置管理解決方案:
導入 django.conf 作為 conf
定義主頁(請求):
conf.settings.SOCIAL_AUTH_FACEBOOK_SCOPE = ['email']
conf.settings.DATABASES['default']['NAME'] = 'testdb'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.