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

网文站点无需表单、独立HTML的章节ID获取及数据调取方案咨询

Django 网文站点动态章节获取实现方案

1. 配置动态路由

在项目的urls.py文件中添加匹配规则,直接从URL中提取章节ID参数:

from django.urls import path
from . import views

urlpatterns = [
    # 其他现有路由
    path('chapters/<int:chapter_id>/', views.get_chapter_content, name='chapter_detail'),
]

这里的<int:chapter_id>会自动匹配/chapters/1、/chapters/2这类路径,把数字部分提取为chapter_id参数传递给视图函数。

2. 编写视图查询逻辑

在应用的views.py文件中编写处理逻辑,用接收的章节ID查询数据库对应内容,返回给渲染模板:

from django.shortcuts import render, get_object_or_404
from .models import Chapter

def get_chapter_content(request, chapter_id):
    # 根据传入的章节ID查询对应数据,不存在则返回404
    chapter = get_object_or_404(Chapter, chapter_id=chapter_id)
    # 将章节数据传递给模板渲染
    return render(request, 'chapter_detail.html', {'chapter': chapter})

如果你做的是前后端分离项目,也可以直接返回JSON格式数据:

from django.http import JsonResponse

def get_chapter_content(request, chapter_id):
    chapter = get_object_or_404(Chapter, chapter_id=chapter_id)
    return JsonResponse({
        'chapter_id': chapter.chapter_id,
        'chapter_title': chapter.chapter_title,
        'chapter_text': chapter.chapter_text,
        'chapter_footnotes': chapter.chapter_footnotes
    })

3. 模板渲染与链接生成

不需要手动给每个章节写HTML链接,遍历章节列表批量生成即可:

<!-- 章节列表页模板 -->
{% for chapter in all_chapters %}
<a href="{% url 'chapter_detail' chapter.chapter_id %}">{{ chapter.chapter_title }}</a>
{% endfor %}

章节详情页模板chapter_detail.html示例:

<h1>{{ chapter.chapter_title }}</h1>
<div class="chapter-content">
    {{ chapter.chapter_text|safe }}
</div>
{% if chapter.chapter_footnotes %}
<div class="footnotes">
    {{ chapter.chapter_footnotes|safe }}
</div>
{% endif %}

注:富文本字段输出时需要加safe过滤器,否则会直接展示HTML源码。

可选优化项

  • 可以在视图中额外查询相邻的上下章节ID,传递给模板实现上一章/下一章跳转功能
  • 加入访问计数、阅读进度记录等功能时,直接在视图中基于chapter_id做对应数据操作即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 20:09:04