Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用django元模块(或任何更简单的方法)呈现html元标记_Python_Django_Django Templates - Fatal编程技术网

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%}

软件包信息/文档非常稀少

我注意到的是:

  • 将社交网络一次减少到“1”,有助于简化控制台错误的内容
  • 似乎有几个变量更喜欢通过“设置”(配置文件)进行设置,而不是在代码中进行设置。 元站点协议='https' META\u SITE\u DOMAIN=env('DJANGO\u META\u SITE\u DOMAIN',默认值为www.InternationalExampleNetwork.com') #META_USE_SITES=True#警告:不要激活,因为这会导致编译失败

    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
    
  • 到目前为止,OG站点()中的文档对我帮助不大(将来会告诉我)
    非常感谢您的帮助,但有效的是
    {%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%}
    它位于详细文章模板中。但这解决了问题。谢谢