首页 > 解决方案 > 如何将模型值传递给不同应用程序中的基本模板?

问题描述

我的应用程序中有一个名为 index.html 的 base.html 模板。我有一个模型,这个模板从我的模型中接收一些数据,称为页脚

class footer(models.Model):
credits = models.CharField(max_length=200, blank=True, default='')
phone = models.CharField(max_length=25, blank=True, default='')
email = models.CharField(max_length=25, blank=True, default='')
address = models.CharField(max_length=25, blank=True, default='')
country_city = models.CharField(max_length=25, blank=True, default='')

在同一个应用程序中,在文件夹模板中,我有模板 base.html,它从我的模型页脚中获取一些值

<li>
 <a class="foot-in" href="mailto:{{footer.email}}">{{ footer.email }}</a>
</li>
<li>
 <p>{{ footer.phone }}</p>
</li>

当我在名为 index 的应用程序中运行 url 时,一切顺利,但是当我在另一个应用程序中使用相同的模板时,url 不会显示来自模型的信息。

我怎样才能使 base.html 模板在我网站的不同应用程序中运行良好?

我希望我的问题很清楚。在此先感谢您的帮助

标签: djangodjango-viewsdjango-templates

解决方案


您需要为此编写一个自定义上下文处理器。例如:

# context processor
# assuming it is in path /project/app/context_processors.py

def get_footer_context(request):
    footer = Footer.objects.last()
    return {
        'footer': footer
    }

然后更新context_processorsin settings.py

TEMPLATES = [
    {
        ...
        'OPTIONS': {
            'context_processors': [
                # rest of the context_processors
                'app.context_processors.get_footer_context', # <-- Add your context processor
            ],
        },
    },
]

推荐阅读