首页 > 解决方案 > 如何在 Django 中执行数据库中的代码

问题描述

我用 Django 创建了一个博客,我的模型帖子是这样的:

class Post(models.Model):
    title = models.CharField(max_length=255, unique=True, db_index=True)
    content = RichTextField()
    # ...

在我的模板中,我显示的帖子内容如下:{{ post.content|safe }}

我想要的是执行帖子内容中的代码。假设我想添加一个指向“关于我”页面的链接,所以逻辑上我会在帖子的内容中添加这个:

# some text here

<a href="{% url 'about' %}">about me</a>

# another text here

这行不通。如果我悬停 URL,我可以看到 URL 127.0.0.1:8000/post/21/{% url 'about' %}。我怎样才能做到这一点。

编辑

实际上,要重定向到about me我可以简单地做的页面<a href="/about/">about me</a>

但是,如果我想重定向到另一个帖子怎么办?我必须指定帖子的 id 或 slug 但我不能这样做:

<a href="{% url 'core:post' post.id %}">post</a>

标签: djangotemplates

解决方案


"|safe" 过滤器只呈现 html 代码。

要从 db 渲染 django 模板,您应该在视图中使用 render 或 render_to_string。但请注意,这是一种极其不安全的做法,因为许多上下文都可以在 django 模板语言中获取和执行


推荐阅读