我正在使用 Django inclusion_tag 和 Wagtail 站点设置

I am working with Django inclusion_tag and Wagtail Site Setting

我是 Django 和 Wagtail 的新手,我遇到的问题很少。

我想使用 Django 评估 Wagtail 站点设置 inclusion_tag。

简而言之,index.html 中的 {{ settings.app_1.SimpleHtmlSettings.heading }} 和 {{ settings.app_1.SimpleHtmlSettings.body }} 没有打印任何东西。

我总共尝试了两种解决方案,但没有一种有效

  1. app_1_extras.py (simple_html = SimpleHtmlSettings.for_site(上下文['request'].site))

  2. app_1_extras.py (simple_html = SimpleHtmlSettings.objects.first)

models.py

from django.db import models
from wagtail.contrib.settings.models import BaseSetting, register_setting

# Create your models here.

@register_setting
class SimpleHtmlSettings(BaseSetting):
    heading = models.CharField(
        max_length=255, help_text='Enter heading')
    body = models.CharField(
        max_length=255, help_text='Enter body content')

views.py

from django.shortcuts import render
from app_1.models import SimpleHtmlSettings
from django.http import HttpResponse

# Create your views here.

def index(request):
    return render(request, 'app_1/test.html')

app_1_extras.py

from django import template
from app_1.models import SimpleHtmlSettings

register = template.Library()

@register.inclusion_tag('app_1/index.html', takes_context=True)
def show_results(context):
    # simple_html = SimpleHtmlSettings.for_site(context['request'].site)
    simple_html = SimpleHtmlSettings.objects.first
    return {'simple_html': simple_html}

index.py

{% load wagtailsettings_tags %}

<h1>{{ settings.app_1.SimpleHtmlSettings.heading }}</h1>

<p>{{ settings.app_1.SimpleHtmlSettings.body }}</p>

<p>Check</p>

test.py

{% load wagtailsettings_tags %}
{% load app_1_extras %}

{% show_results %}

test.html 只打印 "Check"

谢谢!!!

您将变量 simple_html 设置为在您的 index.html 模板中可用,然后从不使用该变量。 index.html 应该变成:

<h1>{{ simple_html.heading }}</h1>

<p>{{ simple_html.body }}</p>

<p>Check</p>