创建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视图处理函数。