Django在运行时更改自定义设置

时间:2015-05-01 08:15:24

标签: python django runtime settings reload

在我的settings.py中有一些自定义设置,我使用了一些数据结构。这些很少改变。 我注意到从一个视图中改变它们不会起作用。 如何强制django在运行时重新加载设置文件? 到目前为止,唯一有效的方法是重新启动Apache Web服务器。但我想避免这种情况。

2 个答案:

答案 0 :(得分:1)

在我的代码中。我需要为受保护(仅限管理员限制)的页面重新发明@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 ControlPanel中:

 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')

答案 1 :(得分:0)

导入view.py

将django.conf导入为conf

def home(请求):

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