日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Django创建图书管理项目(完整版

發布時間:2024/7/5 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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创建图书管理项目(完整版的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。