使用django solo的wagtail全局设置编辑器

wagtail-global-settings的Python项目详细描述


使用django solo的wagtail全局设置编辑器

wagtail-global-settings提供全局单例模型编辑 wagtail的接口和前端访问。它使用 django-solo用于模型。

安装

  1. 安装wagtail-global-settings
  2. wagtail_global_settings添加到 settings.py。它应该在任何使用 global_settings_tags模板标记。

用法

全局设置

要使用wagtail-global-settings的全局设置,您需要 定义一个模型,它继承自 AbstractGlobalSettingsCollection

fromdjango.dbimportmodelsfromwagtail.wagtailadmin.edit_handlersimportFieldPanelfromwagtail_global_settings.modelsimportAbstractGlobalSettingsCollectionclassGlobalSettings(AbstractGlobalSettingsCollection):facebook_app_id=models.CharField(max_length=256)google_app_id=models.CharField(max_length=256)analytics_id=models.CharField(max_length=256)panels=[FieldPanel('facebook_app_id'),FieldPanel('google_app_id'),FieldPanel('analytics_id'),]classMeta:verbose_name="Global settings"

对于前端,您有三个选项:

  • 使用上下文处理器:

'wagtail_global_settings.context_processors.global_settings'添加到 然后使用 模板:{{ global_settings.home.GlobalSettings.facebook_app_id }}

  • 使用模板标记:

{% load global_settings_tags %}添加到 模板,然后使用模板中的标记: {% global_settings 'home' 'GlobalSettings' 'facebook_app_id' %}{% get_global_settings 'home' 'GlobalSettings' 'facebook_app_id' as facebook_app_id %} {{ facebook_app_id }}。 可以跳过字段名,在这种情况下,您将得到 单例模型实例: {% get_global_settings 'home' 'GlobalSettings' as global_settings %} {{ global_settings.facebook_app_id }}

  • 使用由django-solo
  • 提供的模板标记

在模板的开头添加{% load solo_tags %},然后 在模板中使用标记: {% get_solo 'home.GlobalSettings' as global_settings %} {{ global_settings.facebook_app_id }}

站点特定设置

使用wagtail-global-settingsyou的站点特定设置 需要定义一个模型,它继承自 AbstractSiteSettingsCollection

fromdjango.dbimportmodelsfromwagtail.wagtailadmin.edit_handlersimportFieldPanelfromwagtail_global_settings.modelsimportAbstractSiteSettingsCollectionclassGlobalSettings(AbstractSiteSettingsCollection):facebook_app_id=models.CharField(max_length=256)google_app_id=models.CharField(max_length=256)analytics_id=models.CharField(max_length=256)panels=[FieldPanel('facebook_app_id'),FieldPanel('google_app_id'),FieldPanel('analytics_id'),]classMeta:verbose_name="Global site settings"

用法与AbstractGlobalSettingsCollection相同, 除外:

  • 确保'wagtail.wagtailcore.middleware.SiteMiddleware'MIDDLEWARE_CLASSES
  • 使用'wagtail_global_settings.context_processors.site_settings' 而不是 'wagtail_global_settings.context_processors.global_settings'和 放在'django.template.context_processors.request'后面 TEMPLATE_CONTEXT_PROCESSORS
  • 使用{% load site_settings_tags %}而不是 {% load global_settings_tags %}
  • 在中使用{% site_settings %},而不是{% global_settings %}。 模板
  • 使用{% get_site_settings %}而不是 {% get_global_settings %}在模板中
  • django-solo不能与站点特定设置一起使用

站点特定设置的模板标记允许传递和可选 站点参数: {% site_settings 'home' 'GlobalSettings' 'facebook_app_id' the_site %}。 如果此参数缺少当前站点的设置,则 返回。

视图中的用法

对于AbstractGlobalSettingsCollection:

fromhome.modelsimportGlobalSettingsdefview_func_global(request):global_settings=GlobalSettings.get_solo()returnrender(request,'home/the_template.html',{'facebook_app_id':global_settings.facebook_app_id,})

对于AbstractSiteSettingsCollection:

fromhome.modelsimportGlobalSettingsdefview_func_global(request):site_settings=GlobalSettings.objects.for_site(request.site)returnrender(request,'home/the_template.html',{'facebook_app_id':site_settings.facebook_app_id,})

一般

模板标记可通过两种方式使用: {% site_settings 'home' 'GlobalSettings' 'facebook_app_id' %}{% site_settings 'home.GlobalSettings.facebook_app_id' %}

有关配置和缓存的详细信息,请参阅 django-solo

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java JavaFX触控事件未触发Ubuntu 20.04触控笔记本电脑   java如何在AWT中关闭窗口?   java Dagger 2:注入具有构造函数参数的成员   创建对象的Java调用类   对象我想在A.java中添加两个数字,并在B.java中打印结果(如何?)   java如何使用AWS SDK for Android从数字海洋空间下载图像?   java Facebook sdk 4.0.1无法使用Android studio获取某些字段   4分钟后web应用程序(Angular 8和Rest API)中的java自动会话超时   在Eclipse for Java EE developers edition中禁用HTML警告   java按字母顺序排列字符串我错过了什么明显的东西吗?   java在Jshell中println和printf有什么不同