如何将动态应用程序添加到INSTALLED_APPS?

时间:2017-01-12 13:59:09

标签: django django-admin django-middleware

我创建了一个middleware.py文件,我尝试添加" suit"在这个文件的INSTALLED_APPS中,我打印INSTALLED_APPS,尽管列表中没有效果但管理页面没有效果,管理员的风格仍然默认。 这是我在middleware.py文件中的代码

from django.core.urlresolvers import resolve
from django.conf import settings
from django.db.models import loading
from django.core import management
from django.shortcuts import redirect
class CustomeAppMiddleware(object):
    def process_response(self, request, response):
        if 'admin' in request.path_info and 'suit' not in settings.INSTALLED_APPS:
            print request.path_info
            tmp = ('suit',)+settings.INSTALLED_APPS
            settings.INSTALLED_APPS = tmp
            print settings.INSTALLED_APPS
            loading.cache.loaded = False
            management.call_command('syncdb', interactive=False)
        return response

请帮我解决这个问题。谢谢大家。

1 个答案:

答案 0 :(得分:0)

你不应该像这样尝试在运行时改变INSTALLED_APPS

Django在服务器启动时加载应用程序一次。如果您在请求期间更改INSTALLED_APPS,则对其产生任何影响为时已晚。