Django创建图书管理项目(完整版
一、創建項目test1及應用booktest
?
?
創建應用booktest
?
二、安裝應用
在test1/settings.py中INSTALLED_APPS下添加應用的名稱就可以完成安裝
初始項目的INSTALLED_APPS如下圖:
在元組中添加一個新的項,當前示例為booktest
'booktest',
?
三、設計模型
1.定義模型類
- 模型類定義在models.py文件中,繼承自models.Model類
- 說明:不需要定義主鍵列,在生成時會自動添加,并且值為自動增長
- 圖書表結構設計:
- 表名:BookInfo
- 圖書名稱:btitle
- 圖書發布日期:bpub_date
- 英雄表結構設計:
- 表名:HeroInfo
- 英雄姓名:hname
- 英雄性別:hgender
- 英雄簡介:hcontent
- 所屬圖書:hbook
- 圖書-英雄的關系為一對多
- 根據設計,在models.py中定義模型類如下:
?
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.遷移
- 默認采用sqlite3數據庫
- 遷移前目錄結構如下圖:
- 遷移由兩步完成
- 1.生成遷移文件:根據模型類生成創建表的語句
- 2.執行遷移:根據第一步生成的語句在數據庫中創建表
- 生成遷移文件命令:python manage.py makemigrations
- 執行遷移命令:python manage.py migrate
- 遷移后目錄結構如下圖:
?
3.數據操作
- 進入項目的shell,進行簡單的API操作
- 按ctrl+d或輸入quit()可以退出shell
python manage.py shell
- 首先引入booktest/models中的類:
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.定義視圖
- 打開booktest/views.py文件,定義視圖index如下
?
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
- 1.在booktest/應用下創建urls.py文件,定義代碼如下
?
from django.conf.urls import url
#引入視圖模塊
from . import views
urlpatterns = [
??? #配置首頁url
???url(r'^$', views.index),
??? #配置詳細頁url,\d+表示多個數字,小括號用于取值,建議復習下正則表達式
???url(r'^(\d+)$',views.detail),
]
?
- 2.包含到項目中:打開test1/urls.py文件,test1/urls.py文件完整代碼如下
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,目錄結構如下圖:
- 設置查找模板的路徑:打開test1/settings.py文件,設置TEMPLATES的DIRS值
'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
?
七、在瀏覽器地址欄中輸入網址
http://127.0.0.1:8000/
網頁顯示效果如下圖,視圖被成功執行了
?
總結
以上是生活随笔為你收集整理的Django创建图书管理项目(完整版的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数组排序(冒泡、排序)
- 下一篇: Flask入门之上传文件到本地服务器