国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當前位置: 首頁 - 科技 - 知識百科 - 正文

python中Django圖書人物適配系統的實現方法(后臺)

來源:懂視網 責編:小采 時間:2020-11-27 14:11:36
文檔

python中Django圖書人物適配系統的實現方法(后臺)

python中Django圖書人物適配系統的實現方法(后臺):本篇文章給大家帶來的內容是關于python中Django圖書人物適配系統的實現方法(后臺),有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。DjangoPython下有許多款不同的 Web 框架。Django是重量級選手中最有代表性的一位。許多成功的網站和APP
推薦度:
導讀python中Django圖書人物適配系統的實現方法(后臺):本篇文章給大家帶來的內容是關于python中Django圖書人物適配系統的實現方法(后臺),有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。DjangoPython下有許多款不同的 Web 框架。Django是重量級選手中最有代表性的一位。許多成功的網站和APP

本篇文章給大家帶來的內容是關于python中Django圖書人物適配系統的實現方法(后臺),有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。

Django

Python下有許多款不同的 Web 框架。Django是重量級選手中最有代表性的一位。許多成功的網站和APP都基于Django。
Django是一個開放源代碼的Web應用框架,由Python寫成。

Django基礎

版本:Django 1.10
使用Pycharm創建新項目Django,命名為FirstDjango
有FirstDjango目錄,templates目錄,manage.py文件
運行manage.py文件類似flask_script命令行

 python manage.py makemigrations #相當于初始化數據庫表
 python manage.py migrate #相當于數據庫遷移命令,這里的數據庫存儲都是放在db.sqlite3文件里
 python manage.py createsuperuser #創建超級用戶,生成db.sqlite3文件
 python manage.py runserver 7899 #默認端口號:8000

訪問http://127.0.0.1:7899/,可以看見It worked頁面,但還沒有真正的運行APP

52102832-5be952ba7a2c6_articlex.png

修改語言,時區(setting.py)

# LANGUAGE_CODE = 'en-us'
LANGUAGE_CODE = 'zh-hans'

# TIME_ZONE = 'UTC'
TIME_ZONE = 'Asia/Shanghai'

Django不同于flask,不需要在每次修改代碼時,重啟程序。

http://127.0.0.1:7899/admin/,可以訪問到后臺管理
這里可以添加新用戶和新的組,新的用戶、組可以被分配權力,但不能執行超級用戶的分發權限的功能
示例:給add_group組添加‘Can add group ’
創建用戶normal,隸屬add_group組,勾選職員狀態(指明用戶是否可以登錄到這個管理站點)。
使用normal用戶登陸后臺管理時,將只有增加組的選項。

2616114573-5be9527a8497b_articlex.png

創建自己的應用(app) -- book

terminal輸入

python manage.py startapp book

會在當前項目里生成book/目錄

創建好自己的應用文件后,首先在項目里注冊應用setting.py

INSTALLED_APPS = [
 'django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'book',
]

開始寫數據庫結構(model.py)

首先確定數據庫表有哪些:書籍、人物。
然后確定每個表的結構,書籍的屬性有:id,標題,出版時間,摘要,封面。人物屬性:id,姓名,性別,簡介,所屬書籍。
最后確定表之間的關系:一個書籍里面有多個人物,人物數據庫表寫外鍵

在django框架結構里,不需要像flask寫反向引用

# book/models.py
from django.db import models

# Create your models here.
class BookInfo(models.Model):
 # 這里不需要寫id,Django框架默認會生成id,并作為主鍵pk
 btitle = models.CharField(max_length=100,unique=True,verbose_name='書籍標題') # 表示在后臺管理中這一欄的中文顯示
 bpub_time = models.DateField(verbose_name='出版時間')
 # bcontent = models.TextField(default='摘要',verbose_name='書籍摘要')
 # bimg = models.ImageField(default=None,upload_to='static/uploads/')
 class Meta: ##表示這個數據庫表在后臺中的中文顯示,因為英語區分單復數,所以需要寫上單復數的中文顯示
 verbose_name = '書籍信息'
 verbose_name_plural = '書籍信息'
 def __str__(self):
 return '%s' %(self.btitle)

class HeroInfo(models.Model):
 hname = models.CharField(max_length=50,verbose_name='人物姓名')
 hgender = models.BooleanField(default=True,verbose_name='人物性別')
 # 任務簡介
 hcontent = models.TextField(verbose_name='人物簡介')
 # 多的一端寫外鍵
 hbook = models.ForeignKey(BookInfo,verbose_name='所屬書籍')
 @property
 def gender(self):
 if self.hgender:
 return '男'
 else:
 return '女'
 class Meta:
 verbose_name = '人物信息'
 verbose_name_plural = '人物信息'
 def __str__(self):
 return '%s' %(self.hname)

使用sqlite3文件類型數據庫

Django默認使用sqlit3數據庫,可在項目的setting.py文件中查看

DATABASES = {
 'default': {
 'ENGINE': 'django.db.backends.sqlite3',
 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
 }
}

寫好應用book的models.py文件后,我們開始創建數據庫

python manage.py makemigrations 
python manage.py migrate

如何進入sqlite3數據庫表

python manage.py shell #打開類似數據庫交互命令的窗口

1. 數據庫的增添數據

>>> from book.models import BookInfo,HeroInfo
>>> from datetime import date
>>> book1 = BookInfo(btitle='小王子',bpub_time=date(1942,5,13))
>>> book1.save()

2. 數據庫的查找

>>> BookInfo.objects.all()
<QuerySet [<BookInfo: 小王子>]>

根據指定信息查找

>>> book = BookInfo.objects.get(id=1)
>>> book.btitle
'小王子'

3.數據庫數據的修改

>>> book1.btitle = '安徒生童話'
>>> book1.save()
>>> book = BookInfo.objects.get(id=1)
>>> book.btitle
'安徒生童話'

4. 數據庫數據的刪除

>>> book = BookInfo.objects.get(id=1)
>>> book.delete()
(1, {'book.HeroInfo': 0, 'book.BookInfo': 1})
>>> book = BookInfo.objects.all()
>>>

5. 數據庫表之間的關聯
首先,創建沒有外鍵的數據庫表信息

>>> book1 = BookInfo(btitle='小王子',bpub_time=date(1942,5,13))
>>> book2 = BookInfo(btitle='睡美人',bpub_time=date(1952,6,29))
>>> book1.save()
>>> book2.save()

然后,創建外鍵所在的數據庫表信息
1. 根據數據表結構直接創建人物

>>> hero1 = HeroInfo(hname='小王子',hgender=True,hcontent='小王子沒有被成人那騙人的世界所征服',hbook=book1)
>>> hero1 = HeroInfo(hname='玫瑰花',hgender=False,hcontent='玫瑰花的虛榮心傷害了小王子對她的感情',hbook=book1)
>>> hero1.save()
>>> hero2.save()

2. 根據已知的書籍對應的人物信息中添加人物

>>> book1 = BookInfo.objects.get(id=2)
>>> book1.heroinfo_set.all()
<QuerySet [<HeroInfo: 玫瑰花>, <HeroInfo: 小王子>]>
>>> book1.heroinfo_set.create(hname='小狐貍',hgender=True,hcontent='肉眼看不見事務的本質,只有用心靈才能洞察一切')
<HeroInfo: 小狐貍>

查詢人物信息有兩種方式
1. 根據人物數據庫表直接查找

>>> HeroInfo.objects.all()
<QuerySet [<HeroInfo: 玫瑰花>, <HeroInfo: 小王子>]>

2. 根據與數據對象的關系查找

>>> book1 = BookInfo.objects.get(id=2)
>>> book1.heroinfo_set.all()
<QuerySet [<HeroInfo: 玫瑰花>, <HeroInfo: 小王子>]>
>>>

使用mysql文件類型數據庫

修改setting.py文件中的數據庫配置

# Database
# https://docs.djangoproject.com/en/1.10/ref/settings/#databases

DATABASES = {
 'default': {
 # 'ENGINE': 'django.db.backends.sqlite3',
 # 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
 'ENGINE': 'django.db.backends.mysql',
 'NAME': 'firstdjango', #數據庫名稱,若沒有的話,先在數據庫中建立
 'USER': 'root',
 'PASSWORD': 'sheen',
 'HOST': 'localhost',
 'PORT': '3306',
 }
}

這里若直接初始化數據庫會報錯

django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: No module named 'MySQLdb'

需要對項目的__init__.py文件進行設置

# PycharmProjectsFristDjangoFristDjango\__init__.py
import pymysql
pymysql.install_as_MySQLdb()

終端運行命令,在mysql數據庫中,就可以查看到所有的表信息

 python manage.py makemigrations 
 python manage.py migrate

站點對數據庫的操作

通過命令對數據庫的操作尤不方便,我們通過后臺管理的網頁來實現對數據庫的操作
首先需在admin.py文件中注冊數據庫表

#book/admin
from django.contrib import admin
from book.models import BookInfo,HeroInfo
# Register your models here.
admin.site.register(BookInfo)
admin.site.register(HeroInfo)

2798398140-5bea7ecbd881e_articlex.png

書籍信息只顯示標題,和人物信息只顯姓名,不利于查看,修改注冊的表結構

#book/admin.py
from django.contrib import admin
from book.models import BookInfo,HeroInfo
# Register your models here.
class BookInfoAdmin(admin.ModelAdmin):
 list_display = ['btitle','bpub_time']
class HeroInfoAdmin(admin.ModelAdmin):
 list_display = ['hname','hgender','hcontent','hbook'] #顯示欄
 list_filter = ['hbook'] #過濾器
 search_fields = ['hname','hbook'] #搜索欄
 list_per_page = 2 #每頁顯示多少條數據
admin.site.register(BookInfo,BookInfoAdmin)
admin.site.register(HeroInfo,HeroInfoAdmin)

1567868768-5bea7e65b0602_articlex.png

如何在圖書表中直接添加人物,網頁顯示效果:如果跳轉到圖書詳情的頁面,可以直接添加人物
添加HeroInline類,修改BookInfoAdmin類

# book/admin.py
class HeroInline(admin.TabularInline):
 model = HeroInfo
 extra = 2 #每次增加兩個添加人物的表單
 

class BookInfoAdmin(admin.ModelAdmin):
 list_display = ['btitle','bpub_time']
 inlines = [HeroInline]

593531945-5bea7e31b3a18_articlex.png

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

python中Django圖書人物適配系統的實現方法(后臺)

python中Django圖書人物適配系統的實現方法(后臺):本篇文章給大家帶來的內容是關于python中Django圖書人物適配系統的實現方法(后臺),有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。DjangoPython下有許多款不同的 Web 框架。Django是重量級選手中最有代表性的一位。許多成功的網站和APP
推薦度:
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top
主站蜘蛛池模板: 国产拍拍拍免费视频网站 | 91中文字幕网 | 亚洲国产精品成人综合久久久 | 午夜免费福利视频 | 欧美极品视频 | 成人亚洲国产精品久久 | 国产成人精品免费视频大 | 久操综合| 国产精品va一级二级三级 | 激情一区二区三区成人 | 久久亚洲精品国产精品777777 | 制服丝袜中文在线 | 国产网站在线 | 欧美精品国产日韩综合在线 | 视频一区二区三区欧美日韩 | 欧美一区二区三区免费 | 亚洲欧美日韩在线观看 | 欧美 日韩 国产 在线 | 亚洲一区二区三区精品视频 | 亚洲欧美精品伊人久久 | 久久久久久久久国产 | 在线亚洲电影 | 欧美亚洲国产精品第一页 | 亚洲综合在线视频 | 国产综合亚洲欧美日韩一区二区 | 伊人网伊人影院 | 在线免费国产 | 精品国产欧美一区二区三区成人 | 麻豆国产成人精品午夜视频 | 国产亚洲一区二区三区不卡 | 亚洲欧美激情在线 | 欧美亚洲另类在线观看 | 欧美日本在线 | 韩国美女vip福利一区 | 国产一区在线视频 | 亚洲视频一区二区 | 精品久久久一二三区 | 国产一区精品在线观看 | 国内在线观看精品免费视频 | 性欧美激情xxxd | 欧美亚洲一二三区 |