带有 HTML 的 TextField 中的 django URL

django URL in a TextField with HTML

提问人:alexakarpov 提问时间:9/13/2023 最后编辑:alexakarpov 更新时间:9/13/2023 访问量:29

问:

在我的 Django 电子商务项目中,我有一个明显的 Product 模型,带有预期的描述字段:

description = 模型。文本字段(...)

我配置了以下网址:

path(“product/slug:slug”, views.product_detail, name=“product_detail”),

显然,它提供这样的 URL:

http://localhost:8000/product/foo

当产品 foo 是带有产品的集合的一部分时,我想在此类产品的描述字段中添加相应的链接,例如“您可能想与此一起购买酒吧”。

然而,在 foo 的描述中添加一个指向酒吧的链接被证明是棘手的。 整个描述字段(从旧版 ecomm 应用程序导入)可以包含任意 HTML,并且由于它不是用户输入,因此我在模板中将其呈现如下:

{% autoescape off %}
  {{ product.description }}
{% endautoescape %}

当我将其添加到 (TextField) 描述中时:

> This item together with <a href="product/bar">Bar</a> (sold separately)

,则模板中生成的 URL 错误:

http://localhost:8000/product/product/bar/

但如果我不在描述的 url 中使用这个“/product”:

> This item together with <a href="/bar">Bar</a> (sold separately)

,URL也是错误的:

http://localhost:8000/bar/

我承认,我不明白 Django 是如何构建第一个第二个 URL 的。所以具有讽刺意味的是,两者都不是我想要的:)

感谢您抽出宝贵时间接受采访。

django 模板 url href

评论


答:

2赞 0urz4g 9/13/2023 #1

这与 Django 无关。 尝试使用

    > This item together with <a href="/product/bar">Bar</a> (sold separately)

请注意,链接以斜杠开头

希望对您有所帮助

评论

0赞 0urz4g 9/13/2023
另请注意,您的 URL 定义可能应该是: path(“product/<slug:slug>”, views.product_detail, name=“product_detail”),
0赞 alexakarpov 9/14/2023
谢谢一堆!我有点知道它不是 Django,因为模板渲染在这里甚至不是图片的一部分(除了关闭自动转义)。至于URL,我责怪SO标记,没有注意到它偷了我的尖括号=)