【问题标题】:dynamiclly change pages with slug and include tag in template使用 slug 动态更改页面并在模板中包含标签
【发布时间】:2020-11-08 20:53:28
【问题描述】:

我试图在我的网站中建立一个模板预览,当用户点击模板列表页面上的特定模板预览时,它会直接到模板详细页面,urls.py代码如下:

urls.py:

urlpatterns = [
    path('choose_templates/<slug:slug>/', views.template_preview, name='template_preview'),
]

views.py:

def template_preview(request,slug):
    context = {
        'slug':slug
    }
    return render(request,'./html/htmlbase.html',context)

htmlbase.html:

{% include slug %}
<!DOCTYPE html>
  <html>
    <head></head>
    <body>
  </body>
</html>

我想要做的是当用户点击不同的模板预览按钮时,它会指向相应的模板详细信息页面。上面的代码导致“TemplateDoesNotExist”。

谁能帮我解决这个问题?

谢谢!

【问题讨论】:

    标签: django templates url include slug


    【解决方案1】:

    在继续之前,您的问题听起来像是您没有正确配置模板目录。按照惯例,您希望将其添加到您的 settings.py 中(尽管那里应该有一个空列表):

    # settings.py
    
    TEMPLATES = [
        {
            'BACKEND': 'django.template.backends.django.DjangoTemplates',
            'DIRS': [os.path.join(BASE_DIR, 'templates'),], # this line!
            'APP_DIRS': True,
            'OPTIONS': {
                # ... some options here ...
            },
        },
    ]
    

    然后,如果您将任何模板放入名为 templates 的文件夹中,Django 将自动查找它。

    更多关于here的信息

    【讨论】:

    • 是的,我的模板设置正确,如果将“{% include slug %}”替换为“{% include './demo_template.html' %}”,就可以了。跨度>
    • 对我来说,./html/htmlbase.html 看起来仍然很可疑。点在那里做什么?
    • 假设所有模板设置都正常工作,您对如何在基本模板中使用 {% include variable %} 将 slug 与特定模板内容绑定有什么建议吗?我希望你明白我的意思。
    • 类似{% url 'profile' slug=user.slug %}?
    • 您是否知道如果我只使用一个模板并更新该模板中的整个内容页面,请遵循不同的 slug?
    猜你喜欢
    • 2013-10-17
    • 2012-09-22
    • 1970-01-01
    • 2011-04-25
    • 1970-01-01
    • 2013-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多