django - 如何在 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>
解决方案
"|safe" 过滤器只呈现 html 代码。
要从 db 渲染 django 模板,您应该在视图中使用 render 或 render_to_string。但请注意,这是一种极其不安全的做法,因为许多上下文都可以在 django 模板语言中获取和执行
推荐阅读
- java - Java Vector3D method priorities
- php - 如何引用另一个参数作为函数中参数的默认值?
- laravel - 将 Laravel 与 Netsuite 集成
- css - Fixed positioning not at the top of current page view
- c++ - 如何减少 constexpr 函数的编译时间?
- ios - 如何使用 Swift 通过用户输入保存音频录制文件?
- php - PHP页面 - 试图在浏览器上运行文件
- php - SEO 友好的 HTACCESS 301 重定向非 www 到 www PLUS .php 到 non-.php PLUS http 到 htps
- signal-processing - 零填充 - 在窗口之前还是之后?
- kubernetes - 更新 kubernetes_deployment 时出现 Terraform 错误