我正在创建一个基于django的网站,页面内容存储在模型文本字段中,并带有显示该模型的详细视图。如何在内容中放置{%url%}标签以链接到其他页面而无需硬编码链接?
将标签放入文本字段中只会将标签打印为纯文本。 (或者,如果在href内部创建一个损坏的链接)
其他选项是
我可能可以采用手动方式,但是我希望我缺少一种Django方式。
class Page(models.Model):
content = models.TextField(blank=True)
class PageView(DetailView):
model=Page
context_object_name='page'
{% extends "base.html" %}
{% block content %}
{{ page.content|safe }}
{% endblock %}
为清楚起见进行编辑:
编辑2: 感谢this answer在另一个问题上,我能够找到第二种选择的解决方案。使用template_from_string函数,我将页面内容作为模板呈现,然后用呈现的结果替换了上下文中的内容。
class PageView(DetailView):
model=Page
context_object_name='page'
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
# Add to context here
context['page'].content = template_from_string(context['page'].content).render(context)
return context
答案 0 :(得分:0)
您的网址将具有如下所示的名称- path('page //',PageView.as_view,name =“ page-detail”)
以及您的页面详细信息
希望这是您的要求
答案 1 :(得分:0)
看看我是否了解您,您是否希望django向您显示这样的网址,而不是纯文本?
如果要避免django以纯文本形式显示数据,可以使用转义过滤器,如下所示:{{string |逃脱}}
检查this page以获得有关Django过滤器和标签的更多详细信息