如何在 Django 模板中创建正确的路径
Posted
技术标签:
【中文标题】如何在 Django 模板中创建正确的路径【英文标题】:How to create correct path in Django template 【发布时间】:2016-12-10 18:36:54 【问题描述】:我正在尝试在模板中创建指向一些子页面的菜单:
<a href="/">HOME</a> <a href="/about/">O NAS</a> <a href="/rules/">REGULAMIN</a> <a href="/faq/">FAQ</a> <a href="/docs/">DOKUMENTY</A> <a href="/contact/">KONTAKT</a>
而且它只有在我把它放到主文件夹时才有效,所以网址是http://example.org/about/
。
当我将它放入某个子文件夹时,它会出错:
http://example.org/subfolder/about/
有效,但菜单中的链接仍然指向http://example.org/about/
,这是正确的行为。
相对路径不起作用,因为它添加而不是替换 URL 的最后一部分,例如:http://example.org/subfolder/about/rules/
。
如果我知道它将放置什么 url,我可以将它硬编码到模板中,但我确信它可以在两个具有不同“子文件夹”的地方工作,我想让它在任何环境中工作。
我正在尝试寻找解决方案,但它引导我到 TEMPLATE_CONTEXT_PROCESSORS
,这对我不起作用,我不确定这是否正是我想要得到的,所以我不深入了解。
【问题讨论】:
【参考方案1】:Name your URL's.
url(r'^about', views.about, name="about")
然后使用URL template tag 为每个名称生成适当的 URL。
% url 'about' %
【讨论】:
NoReverseMatch at / Reverse for 'about' 没有找到参数 '()' 和关键字参数 ''。尝试了 0 个模式:[]【参考方案2】:解决方案是添加
from django.conf.global_settings import TEMPLATE_CONTEXT_PROCESSORS as TCP
TEMPLATE_CONTEXT_PROCESSORS = TCP + (
'django.core.context_processors.request',
)
进入settings.py
这是在这里找到的:https://***.com/a/9233283/354420
在模板中,您可以使用views.about
或name
(如果已定义)。
【讨论】:
以上是关于如何在 Django 模板中创建正确的路径的主要内容,如果未能解决你的问题,请参考以下文章
如何从用户在 django 基本模板中创建的所有帖子中获取模型字段值的总和?
如何使用 CBV 在我的所有 Django 模板中创建侧边栏?