赞
踩
一、创建项目test1及应用booktest
创建应用booktest
二、安装应用
在test1/settings.py中INSTALLED_APPS下添加应用的名称就可以完成安装
初始项目的INSTALLED_APPS如下图:
在元组中添加一个新的项,当前示例为booktest
'booktest',
三、设计模型
1.定义模型类
from django.dbimport models
classBookInfo(models.Model):
btitle =models.CharField(max_length=20)
bpub_date =models.DateField()
def __str__(self):
return "%d" % self.pk
classHeroInfo(models.Model):
hname =models.CharField(max_length=20)
hgender =models.BooleanField()
hcontent = models.CharField(max_length=100)
hBook =models.ForeignKey('BookInfo')
def __str__(self):
return "%d" % self.pk
2.迁移
3.数据操作
python manage.py shell
frombooktest.models import BookInfo,HeroInfo
BookInfo.objects.all()
b=BookInfo()
b.btitle="射雕英雄传"
from datetime import date
b.bpub_date=date(1990,1,10)
b.save()
注:多个图书对象需要多次退出多次新建对象,否则覆盖,因为这里数据库是sqlite3
四、视图
1.定义视图
from django.shortcuts import render
from .models import BookInfo
#首页,展示所有图书
def index(reqeust):
#查询所有图书
booklist = BookInfo.objects.all()
#将图书列表传递到模板中,然后渲染模板
return render(reqeust, 'booktest/index.html', {'booklist': booklist})
#详细页,接收图书的编号,根据编号查询,再通过关系找到本图书的所有英雄并展示
def detail(reqeust, id):
#根据图书编号对应图书
book = BookInfo.objects.get(pk=id)
#将图书信息传递到模板中,然后渲染模板
return render(reqeust, 'booktest/detail.html', {'book': book})
2.配置URLconf
from django.conf.urls import url
#引入视图模块
from . import views
urlpatterns = [
#配置首页url
url(r'^$', views.index),
#配置详细页url,\d+表示多个数字,小括号用于取值,建议复习下正则表达式
url(r'^(\d+)$',views.detail),
]
fromdjango.conf.urls import include, url
from django.contrib import admin
urlpatterns= [
url(r'^admin/',include(admin.site.urls)),
url(r'^',include('booktest.urls')),
]
五、模板
创建模板
为应用booktest下的视图index创建模板index.html,目录结构如下图:
'DIRS': [os.path.join(BASE_DIR,'templates')],
定义模板
创建templates/booktest/index.html文件如下
<html>
<head>
<title>首页</title>
</head>
<body>
<h1>图书列表</h1>
<ul>
{#遍历图书列表#}
{%for book in booklist%}
<li>
{#输出图书名称,并设置超链接,链接地址是一个数字#}
<ahref="{{book.id}}">{{book.btitle}}</a>
</li>
{%endfor%}
</ul>
</body>
</html>
创建templates/booktest/detail.html文件如下
<html>
<head>
<title>详细页</title>
</head>
<body>
{#输出图书标题#}
<h1>{{book.btitle}}</h1>
<ul>
{#通过关系找到本图书的所有英雄,并遍历#}
{%for hero inbook.heroinfo_set.all%}
{#输出英雄的姓名及描述#}
<li>{{hero.hname}}---{{hero.hcontent}}</li>
{%endfor%}
</ul>
</body>
</html>
最终文件如下:
六、开发服务器
运行服务器命令:pythonmanage.py runserver
七、在浏览器地址栏中输入网址
网页显示效果如下图,视图被成功执行了
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。