Python 如何使用django元模块(或任何更简单的方法)呈现html元标记
我已经尽我最大的努力遵循文档。 已将其添加到设置文件中的应用程序列表中Python 如何使用django元模块(或任何更简单的方法)呈现html元标记,python,django,django-templates,Python,Django,Django Templates,我已经尽我最大的努力遵循文档。 已将其添加到设置文件中的应用程序列表中 INSTALLED_APPS = [ ... 'meta', ] 我的模型看起来像 from django.db import models from meta.models import ModelMeta class Article(ModelMeta, models.Model): user = models.ForeignKey(User, default=1, null=True, on
INSTALLED_APPS = [
...
'meta',
]
我的模型看起来像
from django.db import models
from meta.models import ModelMeta
class Article(ModelMeta, models.Model):
user = models.ForeignKey(User, default=1, null=True, on_delete=models.SET_NULL)
image = models.ImageField(upload_to='image/', blank=True, null=True)
title = models.CharField(max_length=120)
slug = models.SlugField(unique=True)
content = models.TextField(null=True, blank=True)
_metadata = {
'title': 'title',
'description': 'content',
}
def article_detail_view(request, slug):
obj = get_object_or_404(Article, slug=slug)
template_name = ['snmov/home.html']
context = {}
context['object'] = obj
context['meta'] = obj.as_meta()
return render(request, template_name, context)
path('<str:slug>/', article_detail_view, name='article_detail'),
My views.py看起来像
from django.db import models
from meta.models import ModelMeta
class Article(ModelMeta, models.Model):
user = models.ForeignKey(User, default=1, null=True, on_delete=models.SET_NULL)
image = models.ImageField(upload_to='image/', blank=True, null=True)
title = models.CharField(max_length=120)
slug = models.SlugField(unique=True)
content = models.TextField(null=True, blank=True)
_metadata = {
'title': 'title',
'description': 'content',
}
def article_detail_view(request, slug):
obj = get_object_or_404(Article, slug=slug)
template_name = ['snmov/home.html']
context = {}
context['object'] = obj
context['meta'] = obj.as_meta()
return render(request, template_name, context)
path('<str:slug>/', article_detail_view, name='article_detail'),
此视图的路径如下所示
from django.db import models
from meta.models import ModelMeta
class Article(ModelMeta, models.Model):
user = models.ForeignKey(User, default=1, null=True, on_delete=models.SET_NULL)
image = models.ImageField(upload_to='image/', blank=True, null=True)
title = models.CharField(max_length=120)
slug = models.SlugField(unique=True)
content = models.TextField(null=True, blank=True)
_metadata = {
'title': 'title',
'description': 'content',
}
def article_detail_view(request, slug):
obj = get_object_or_404(Article, slug=slug)
template_name = ['snmov/home.html']
context = {}
context['object'] = obj
context['meta'] = obj.as_meta()
return render(request, template_name, context)
path('<str:slug>/', article_detail_view, name='article_detail'),
meta.html已经发布
{{meta}}
我的问题:
我希望它在meta标记中呈现文章的“标题”和“内容”,但它将meta标记呈现为
在页面的主体上
问题:
如何使其呈现在文档的头部?
为了使meta标记按预期的方式呈现,我缺少了什么
任何帮助都将不胜感激。如果需要,我可以提供更多信息。谢谢您应该在基本模板的标题中创建一个块:
<head>
...
...
{% block meta_extend %}
{% endblock %}
</head>
{% block meta_extend %}
{{ meta }}
{% endblock %}
或者类似的:
{% block meta_extend %}
<meta name="description" content="{{ obj.description }}">
<meta name="title" content="{{ obj.title }}">
{% endblock %}
{%block meta\u extend%}
{%endblock%}
软件包信息/文档非常稀少
我注意到的是:
META_USE_OG_PROPERTIES = True
FB_TYPE=''
FB_APPID=''
FB_PROFILE_ID='1111111'
FB_PUBLISHER='@InternationalExampleNetwork'
FB_AUTHOR_URL='/en/'
FB_PAGES=''
META_USE_TWITTER_PROPERTIES = False
TWITTER_TYPE=11
TWITTER_SITE=env('DJANGO_META_SITE_DOMAIN', default='www.InternationalExampleNetwork.com')
TWITTER_AUTHOR='International Example Network'
# Is there still some use for Google+ ... ?
META_USE_GOOGLEPLUS_PROPERTIES = False
非常感谢您的帮助,但有效的是
{%block meta\u extend%}{%endblock%}
您好,这个if语句应该根据加载的url更改元标记。当“主页”加载时,没有显示任何内容,但所需的元标记加载到其他页面上。你知道为什么吗<代码>{%url'homepage'作为home%}{%if request.get_full_path==home%}Foo Bar Title{%else%}{%endif%}此块是在您的基础中还是在您的详细文章模板中?您可以在block
语句中将默认值写入基本模板,例如:{%block meta\u extend%}Foo Bar Title{%endblock%}
它位于详细文章模板中。但这解决了问题。谢谢