如果Django安装了应用,请调整视图

nla*_*aux 4 django django-apps django-views

我有一个带有单独工作项目的Web应用程序(它是索引,登录..页面)。

如果安装了新应用程序,则需要更改索引页面(例如:在应用程序模型中添加链接,模板中的表。)。具有动态性。

删除应用程序必须使项目完整无缺,只需删除链接即可。

我怎样才能做到这一点?可能吗?

Eug*_*ash 7

您可以使用Django的应用程序注册表

In [1]: from django.apps import apps
In [2]: apps.is_installed("django.contrib.admin")
Out[2]: True
Run Code Online (Sandbox Code Playgroud)

实际上,可以通过使用指向程序包或应用程序配置类(首选)的点分Python路径来启用应用程序。在后一种情况下,仅检查是否"app_name"存在settings.INSTALLED_APPS将失败。


scy*_*ale 6

def my_view(request):
    from django.conf import settings
    app_installed = 'app_name' in settings.INSTALLED_APPS

    return render_to_response(template_name, {'app_installed': app_installed})
Run Code Online (Sandbox Code Playgroud)

模板:

{% if app_installed %}
    ...
{% endif %}
Run Code Online (Sandbox Code Playgroud)


Dav*_* R. 6

或使用自定义上下文处理器。

installed_apps.py

from django.conf import settings

def installed_apps(request):
    return {
       'app_installed' : 'app_name' in settings.INSTALLED_APPS
    }
Run Code Online (Sandbox Code Playgroud)

settings.py

TEMPLATE_CONTEXT_PROCESSORS = (
    ...
    'installed_apps.installed_apps'
)
Run Code Online (Sandbox Code Playgroud)