我正在尝试在现有的Django应用程序中实现元标记。为此,我使用Redsolution Django-SEO
正如他们在自述文件中所示,我的设置和迁移都很好。甚至这些字段也正好出现在管理员中。但是,在模板中,我遵循其约定并将其放在head
部分中:
{% load seo_tags %}
<meta name="description" content="{% seo description for article %}">
<meta name="keywords" content="{% seo keywords for article %}">
加载部分不会导致任何错误,但以下行会在调试模式下抛出以下错误:
/ articles / columnjp / podcast-test /
中的NameError
接下来是:
全球名称&#39; seo&#39;未定义
我想知道这种语法是什么,首先是:
{% seo description for article %}
这是标准语法组件还是该模块的自定义内容?我应该做些什么改变来修复这个错误?如果需要任何其他信息或代码组件,请告知我们。
答案 0 :(得分:0)
似乎&#34;获取和输出&#34;这个插件的一部分有错误或与较新版本的Django不兼容(在我的情况下为1.6)。
无论如何,我已经研究了这个库中的代码并为此部分编写了自己的代码并且它可以工作。对于陷入类似情况的人,我发布我的实现以供参考。下面的代码在我对需要此插件的项目的目标子部分(app)的视图中:
from seo.models import Seo
def get_keywords(self, article):
seo_object = Seo.objects.get(object_id=article.id)
keywords = seo_object.keywords
return keywords
def get_description(self, article):
seo_object = Seo.objects.get(object_id=article.id)
description = seo_object.description
return description
我没有使用标题,但也可以使用类似的概念。在此之后,我将 context 中返回的值传递给模板 HAML / HTML,然后在head部分中,使用它来创建元数据的标记。
通过这个修复,这个插件的管理和模型绑定能力的完美集成仍然可以使用。