You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Django HTML模板中调用函数变量实现MD文件跳转?

问题解决步骤

你当前的实现存在两个核心问题:

  • views.py中直接执行util.get_entry()却未传入参数,导致函数返回None,且模板无法给已执行的函数传参
  • Django模板不支持直接调用带参数的Python函数,正确做法是通过URL路由+详情视图处理跳转请求

1. 编写详情视图(views.py)

创建专门处理条目详情的视图,接收title参数并调用get_entry获取内容:

from django.shortcuts import render
import util

def index(request):
    # 替换为你实际获取entries列表的逻辑(比如读取entries目录下的文件名)
    entries = ["apple", "banana", "cherry"]
    return render(request, "encyclopedia/index.html", {
        "entries": entries
    })

def entry_detail(request, title):
    content = util.get_entry(title)
    # 处理内容不存在的情况
    if content is None:
        return render(request, "encyclopedia/404.html")
    return render(request, "encyclopedia/entry.html", {
        "title": title,
        "content": content
    })

2. 配置URL路由(urls.py)

添加详情页面的路由,让URL可以接收title参数:

from django.urls import path
from . import views

urlpatterns = [
    path("", views.index, name="index"),
    # 新增路由,匹配带标题的详情页URL
    path("<str:title>/", views.entry_detail, name="entry_detail"),
]

3. 修改index.html模板

将列表项的链接改为指向详情路由,用Django的{% url %}标签生成正确URL:

{% block body %}
    <h1>All Pages</h1>

    <ul>
        {% for entry in entries %}
            <li><a href="{% url 'entry_detail' entry %}">{{ entry }}</a></li>
        {% endfor %}
    </ul>
{% endblock %}

4. 创建详情页面模板(entry.html)

新建模板用于展示Markdown内容(如需将MD转为HTML,可参考后续补充):

{% block body %}
    <h1>{{ title }}</h1>
    <div>{{ content|safe }}</div>
{% endblock %}

补充:将Markdown转为HTML显示

如果需要把MD内容渲染为HTML,先安装依赖pip install markdown,再修改entry_detail视图:

import markdown

def entry_detail(request, title):
    content = util.get_entry(title)
    if content is None:
        return render(request, "encyclopedia/404.html")
    # 转换MD内容为HTML
    html_content = markdown.markdown(content)
    return render(request, "encyclopedia/entry.html", {
        "title": title,
        "content": html_content
    })

内容的提问来源于stack exchange,提问作者Matheus Coppi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 06:10:33