Django框架搭建简易图书信息网站完整教程

Ruby
Ruby
发布时间:2026-10-13| 4人浏览过
原创

本文详细演示如何使用Django框架搭建一个简易的图书信息网站。内容涵盖项目初始化、MySQL数据库配置、模型定义、视图函数编写及模板渲染。通过实现图书列表查询、新增图书、详情页展示及人物信息关联等功能,帮助开发者掌握Django核心组件的使用,适合Python初学者参考实践。

Django图书网站开发概述

本文通过一个具体的实例,介绍如何利用Django框架构建一个简易的图书信息网站。该案例旨在为读者提供清晰的开发思路,供学习和参考使用。

项目初始化与数据库配置

首先创建Django项目,并将默认数据库配置修改为MySQL。同时,需要修改项目根目录下的urls.py文件,以配置全局URL路由。

接下来,在项目中创建一个新的应用(App),并在该应用的目录中创建对应的urls.py文件,用于处理应用级别的URL映射。

数据模型定义

在应用的models.py文件中定义数据模型,建立对应的数据库表结构,以存储图书及相关信息。


from django.db import models
# Create your models here.
#一类
class BookInfo(models.Model):
 btitle=models.CharField(max_length=20)#图书名称
 bpub_date=models.DateField()#出版日期
 bread=models.IntegerField(default=0)#阅读量,默认为0
 bcomment=models.IntegerField(default=0)#评论量
 isDlete=models.BooleanField(default=False)#逻辑删除,默认不删除
#多类
class HeroInfo(models.Model):
 hname=models.CharField(max_length=20)
 hgender=models.BooleanField(default=False)
 hcomment=models.CharField(max_length=200)
 #定义一个关系属性
 hbook=models.ForeignKey('BookInfo')
 isDlete = models.BooleanField(default=False) # 逻辑删除,默认不删除

首页功能实现

首页index.html负责展示所有图书信息。需要在views.py中完善index视图函数,负责查询数据并传递给模板进行渲染。


def index(request):
 # 1.查询出所有图书的信息
 books = BookInfo.objects.all()
 # 2.使用模板
 return render(request, 'booktest/index.html', {'books': books})

在template文件夹下的booketest子目录中,新建index.html文件,用于编写首页的HTML模板代码。


<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>图书信息</title>
</head>
<body>
<a href="/create" rel="external nofollow" >新增</a>
 <ul>
  {% for book in books %}
   <li><a href="/books{{ book.id }}" rel="external nofollow" >{{ book.btitle }}</a><a href="/delete{{ book.id }}" rel="external nofollow" >_删除</a></li>
  {% endfor %}
 </ul>
</body>
</html>

新增图书功能开发

index.html页面中包含一个“create”新增按钮。为了处理该按钮的点击事件,需要在views.py中添加对应的create视图处理函数。


def create(request):
 '''新增一本图书'''
 # 1.创建一个bookinfo对象
 b = BookInfo()
 b.btitle = '流星蝴蝶剑'
 b.bpub_date = date(1990, 1, 1)
 # 2.保存进数据库
 b.save()
 # 3.返回应答
 # return HttpResponse('ok')
 # 让浏览器返回首页
 return HttpResponseRedirect('/index')

当图书数据成功添加到数据库后,程序应重定向回首页index,以便用户能看到最新添加的图书信息。

在应用的urls.py文件中必须配置url(r'^create$',views.create),这样才能正确地将URL请求路由到create处理函数,确保新增功能正常工作。

图书详情与人物展示

创建一个用于显示图书详细人物信息的details.html页面。用户从index.html点击具体图书时,通过book.id获取对应的图书数据进行展示。

在views.py中编写details视图处理函数,负责接收图书ID参数,查询图书及其关联的英雄信息,并渲染details.html模板。


def details(request,bid):
 book=BookInfo.objects.get(id=bid)
 heros=book.heroinfo_set.all()
 return render(request,'booktest/details.html',{'book':book,'heros':heros})

新建details.html文件,用于展示图书标题及其关联的英雄列表信息。


<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>Title</title>
</head>
<body>
 <h1>{{book.btitle}}</h1>
英雄信息:
<br/>
<ul>
 {% for hero in heros %}
 <li>{{hero.hname}}--{{hero.hcomment}}</li>
  {% empty %}
  没有英雄信息
 {% endfor %}
</ul>
</body>
</html>

在应用的urls.py文件中,将具体的URL地址模式与details视图处理函数进行对应绑定,确保路由正确。


url(r'^books(\d+)$',views.details)

在URL配置中,(\d+)部分用于捕获并传递图书ID参数给details视图处理函数,实现动态数据加载。

源码获取与总结

完整的项目代码已托管在github:https://github.com/zhangyuespec/Django,供读者下载参考。

希望本文所述的步骤和代码示例,能对大家基于Django框架进行Python Web程序设计有所帮助。

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。