簡體   English   中英

Django 在運行時更改自定義設置

[英]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 配置管理解決方案:

https://www.djangopackages.com/grids/g/configuration/

在 view.py 中導入

導入 django.conf 作為 conf

定義主頁(請求):

conf.settings.SOCIAL_AUTH_FACEBOOK_SCOPE = ['email']
conf.settings.DATABASES['default']['NAME'] = 'testdb'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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