本文实例讲述了Django框架搭建的简易图书信息网站。分享给大家供大家参考,具体如下:
创建Django项目,将数据库改为mysql,修改项目的urls.py文件
创建一个新应用,在应用里创建urls.py文件。
在应用的models.py里建表
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
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函数。
1
2
3
4
5
|
def index(request): # 1.查询出所有图书的信息 books = BookInfo.objects. all () # 2.使用模板 return render(request, 'booktest/index.html' , { 'books' : books}) |
在template文件夹下的booketest文件夹下新建index.html文件。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
<!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新增按钮,去view.py里添加create处理函数
1
2
3
4
5
6
7
8
9
10
11
12
|
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)
,才能正确的跳转到create处理函数。
一个显示书里人物的details.html,从index.html用book.id去寻找书的数据。
去views.py写details处理函数
1
2
3
4
|
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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
<!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地址和视图处理函数对应上
1
|
url(r '^books(\d+)$' ,views.details) |
这里的(\d+)是需要传参到details视图处理函数。
github:https://github.com/zhangyuespec/Django
希望本文所述对大家基于Django框架的Python程序设计有所帮助。
原文链接:https://blog.csdn.net/qq_34788903/article/details/87867601