日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

python Django框架快速入門教程(后臺(tái)管理)

瀏覽:226日期:2022-06-14 18:11:54

Python下有許多款不同的 Web 框架。Django是重量級(jí)選手中最有代表性的一位。許多成功的網(wǎng)站和APP都基于Django。

Django 是一個(gè)開(kāi)放源代碼的 Web 應(yīng)用框架,由 Python 寫成。

Django 遵守 BSD 版權(quán),初次發(fā)布于 2005 年 7 月, 并于 2008 年 9 月發(fā)布了第一個(gè)正式版本 1.0 。

Django 采用了 MVT 的軟件設(shè)計(jì)模式,即模型(Model),視圖(View)和模板(Template)。

參考官方文檔:Django官方文檔https://docs.djangoproject.com/zh-hans/3.2/

下面看下python Django框架快速入門,步驟如下所示:

第一步:項(xiàng)目的創(chuàng)建與運(yùn)行

第一次使用 Django ,那么你必須要照顧一些初始設(shè)置。也就是說(shuō),您需要自動(dòng)生成一些建立 Django項(xiàng)目的代碼。從命令行 cd 到您要存儲(chǔ)代碼的目錄,然后運(yùn)行以下命令:

django-admin startproject BookManage

進(jìn)入項(xiàng)目目錄,目錄結(jié)構(gòu)如下圖:

python Django框架快速入門教程(后臺(tái)管理)

目錄說(shuō)明:manage.py :一個(gè)命令行工具,可以使你用多種方式對(duì) Django 項(xiàng)目進(jìn)行交互內(nèi)層的目錄:項(xiàng)目的真正的Python包__init__.py :一個(gè)空文件,它告訴Python這個(gè)目錄應(yīng)該被看做一個(gè)Python包settings.py :項(xiàng)目的配置urls.py :項(xiàng)目的URL聲明wsgi.py :項(xiàng)目與 WSGI 兼容的Web服務(wù)器入口

第二步:應(yīng)用的創(chuàng)建和使用

(1) 創(chuàng)建第一個(gè)應(yīng)用程序

Django 自帶一個(gè)實(shí)用程序,可以自動(dòng)生成應(yīng)用程序的基本目錄結(jié)構(gòu),因此您可以專注于編寫代碼而不是創(chuàng)建目錄。在一個(gè)項(xiàng)目中可以創(chuàng)建一到多個(gè)應(yīng)用,每個(gè)應(yīng)用進(jìn)行一種業(yè)務(wù)處理創(chuàng)建應(yīng)用的命令:

python3 manage.py startapp bookApp

應(yīng)用的目錄結(jié)構(gòu)如下圖 :

python Django框架快速入門教程(后臺(tái)管理)

(2) 編寫第一個(gè)視圖函數(shù)

打開(kāi)文件 bookApp/views.py 并放入以下Python代碼:

from django.shortcuts import render# Create your views here.from django.http import HttpResponsedef index(request):return HttpResponse('圖書管理系統(tǒng)')

(3) 路由規(guī)則

在 bookApp 目錄中創(chuàng)建一個(gè) URLconf ,創(chuàng)建一個(gè)名為 urls.py 。

# bookApp/urls.pyfrom django.conf.urls import urlfrom . import viewsurlpatterns = [# 當(dāng)用戶訪問(wèn)bookApp應(yīng)用的主頁(yè)時(shí), 執(zhí)行視圖函數(shù)index,反向根據(jù)名稱獲取url地址;url(r’^$’, views.index, name=’index’),]

根據(jù)配置文件 BookManage/settings 可知路由查找的主文件是 BookManage/urls.py , 因此在該文件添加一條 url 規(guī)則:

# BookManage/urls.pyfrom django.conf.urls import urlfrom django.contrib import adminfrom django.urls import path, includeurlpatterns = [path(’admin/’, admin.site.urls),# 當(dāng)用戶訪問(wèn)的url地址以book開(kāi)頭, 請(qǐng)?jiān)L問(wèn)bookApp.urls這個(gè)url配置文件進(jìn)行匹配并執(zhí)行對(duì)應(yīng)的視圖函數(shù).url(r’^book/’, include(’bookApp.urls’)),]

include()函數(shù)允許引用其他 URLconfs 。

(4) 效果展示

啟動(dòng)服務(wù)器

python3 manage.py runserver

python Django框架快速入門教程(后臺(tái)管理)

訪問(wèn) url 地址: http:// 127.0.0.1:8000/book/ 如果看到主頁(yè)內(nèi)容 圖書管理系統(tǒng) 即成功

python Django框架快速入門教程(后臺(tái)管理)

第三步: 項(xiàng)目的數(shù)據(jù)庫(kù)模型

(1). 數(shù)據(jù)庫(kù)創(chuàng)建

MariaDB [(none)]> create database BookManage charset=utf8;

(2). 連接 MySQL 數(shù)據(jù)庫(kù)配置

在 settings.py 文件中,通過(guò)DATABASES項(xiàng)進(jìn)行數(shù)據(jù)庫(kù)設(shè)置Django 支持的數(shù)據(jù)庫(kù)包括: sqlite 、 mysql 等主流數(shù)據(jù)庫(kù)Django 默認(rèn)使用 **SQLite** 數(shù)據(jù)庫(kù)Django數(shù)據(jù)庫(kù)設(shè)置參考文檔其中ENGINE設(shè)置為數(shù)據(jù)庫(kù)后端使用。內(nèi)置數(shù)據(jù)庫(kù)后端有:’django.db.backends.postgresql’’django.db.backends.mysql’’django.db.backends.sqlite3’’django.db.backends.oracle’

在 BookManage/settings.py 文件中,通過(guò)DATABASES項(xiàng)進(jìn)行數(shù)據(jù)庫(kù)設(shè)置:

# .......# 注釋之前的sqlite數(shù)據(jù)庫(kù);# DATABASES = {#’default’: {#’ENGINE’: ’django.db.backends.sqlite3’,#’NAME’: os.path.join(BASE_DIR, ’db.sqlite3’),#}# }# 添加新的Mysql數(shù)據(jù)庫(kù)連接;DATABASES = {’default’: {’ENGINE’: ’django.db.backends.mysql’,’NAME’: ’BookManage’,’USER’: ’root’,’PASSWORD’: ’westos’,’HOST’: ’localhost’,’PORT’: ’3306’,}}# .......注意: Django 使用 MySQL 數(shù)據(jù)庫(kù)需要安裝 PyMySQL ,若已經(jīng)安裝請(qǐng)略過(guò)。pip install pymysql

打開(kāi) BookManage/__init__.py ,寫入以下代碼導(dǎo)入 pymysql :

import pymysql# MySQLdb只支持Python2.*,還不支持3.可以用PyMySQL代替。pymysql.install_as_MySQLdb()

(2). 創(chuàng)建數(shù)據(jù)庫(kù)模型

本示例完成“圖書-英雄”信息的維護(hù),需要存儲(chǔ)兩種數(shù)據(jù):圖書、英雄

圖書表結(jié)構(gòu)設(shè)計(jì): 表名: Book圖書名稱: title圖書發(fā)布時(shí)間: pub_date英雄表結(jié)構(gòu)設(shè)計(jì): 表名: Hero英雄姓名: name英雄性別: gender英雄簡(jiǎn)介: hcontent所屬圖書: hbook

圖書-英雄的關(guān)系為一對(duì)多

# bookApp/models.pyfrom django.db import models# Create your models here.class Book(models.Model):# 定義屬性:默認(rèn)主鍵自增id字段可不寫title = models.CharField(max_length=20)pub_date = models.DateTimeField()# 定義默認(rèn)輸出格式def __str__(self):return '%d' % self.title# 自定義對(duì)應(yīng)的表名,默認(rèn)表名:bookApp_bookclass Meta:db_table = 'books'class Hero(models.Model):name = models.CharField(max_length=20)gender = models.BooleanField()content = models.CharField(max_length=100)Book = models.ForeignKey(’Book’, on_delete=False)def __str__(self):return '%s' % self.name# 自定義對(duì)應(yīng)的表名,默認(rèn)表名:bookApp_heroclass Meta:db_table = 'heros'

(3). 生成數(shù)據(jù)庫(kù)表

激活模型:編輯 settings.py 文件,將應(yīng)用加入到 INSTALLED_APPS 中

# BookManage/settings.py# Application definitionINSTALLED_APPS = [# .......此處省略’django.contrib.staticfiles’,# 新添加的app’bookApp’,]

生成遷移文件:根據(jù)模型類生成 sql 語(yǔ)句

python manage.py makemigrations

產(chǎn)生的遷移文件如下:

python Django框架快速入門教程(后臺(tái)管理)

執(zhí)行遷移:執(zhí)行 sql 語(yǔ)句生成數(shù)據(jù)表

python manage.py migrate

數(shù)據(jù)庫(kù)中查看數(shù)據(jù)庫(kù)表是否創(chuàng)建成功?

$ mysql -uroot -pwestosMariaDB [(none)]> use BookManageMariaDB [BookManage]> show tables;MariaDB [BookManage]> desc books;+----------+-------------+------+-----+---------+----------------+| Field| Type| Null | Key | Default | Extra|+----------+-------------+------+-----+---------+----------------+| id | int(11)| title | varchar(20) | NO| pub_date | datetime| NO| NO| PRI | NULL | auto_increment || | NULL | || | NULL | |+----------+-------------+------+-----+---------+----------------+MariaDB [BookManage]> desc heros;+---------+--------------+------+-----+---------+----------------+| Field| Type| Null | Key | Default | Extra|+---------+--------------+------+-----+---------+----------------+| id | int(11) | NO | PRI | NULL | auto_increment || name | varchar(20) | NO | | NULL | || gender | tinyint(1) | NO | | NULL | || content | varchar(100) | NO | | NULL | || Book_id | int(11) | MUL | NULL | || NO+---------+--------------+------+-----+---------+----------------+5 rows in set (0.00 sec)

(4). 數(shù)據(jù)庫(kù)模型基本操作

現(xiàn)在進(jìn)入交互式的Python shell,并使用 Django 提供的免費(fèi) API

python manage.py shell

引入需要的包:

from bookApp.models import Hero, Book

查詢所有圖書信息:

Book.objects.all()

新建圖書信息:

from datetime import datetimebook = Book(title='射雕英雄傳', pub_date=datetime(year=1990,month=1,day=10))book.save()

查找圖書信息:

book = Book.objects.get(pk=1)book.idbook.titlebook.pub_date

修改圖書信息:

book.title = '天龍八部'book.save()

刪除圖書信息:

book.delete()

添加關(guān)聯(lián)對(duì)象

# 書籍的創(chuàng)建book = Book(title='倚天屠龍記', pub_date=datetime(year=1990,month=1,day=10))book.save()# 人物的創(chuàng)建info1 = '峨眉第四代掌門人,先為峨眉派掌門滅絕師太的徒兒,頗獲滅絕師太歡心并對(duì)她>青睞有加,將峨眉派鎮(zhèn)派之寶“蛾眉九陽(yáng)功”傳給了她,張無(wú)忌的追求者之一。'info2 = '原名敏敏特穆?tīng)?汝陽(yáng)王(朝廷大將軍察罕特穆?tīng)?的女兒,封號(hào)“紹敏郡主”,>趙敏是她的漢名,是從她的封號(hào)“紹敏郡主”而來(lái)。'hero1 = Hero(name='周芷若', gender=False, info=info1)hero2 = Hero(name='趙敏', gender=False, info=info2)hero1.Book=bookhero2.Book=bookhero1.save()hero2.save()

獲得關(guān)聯(lián)集合:返回當(dāng)前book對(duì)象的所有hero

book.hero_set.all()

有一個(gè) Hero 存在,必須要有一個(gè) Book 對(duì)象,提供了創(chuàng)建關(guān)聯(lián)的數(shù)據(jù):

book.hero_set.create(name='張無(wú)忌',gender=True,content='武當(dāng)派第二代“張五俠”張翠山與天鷹教紫微堂堂主殷素素的兒子')

第四步: 啟用后臺(tái) Admin 站點(diǎn)管理、

站點(diǎn)分為“內(nèi)容發(fā)布(后臺(tái)管理)”和“公共訪問(wèn)(前臺(tái)管理)”兩部分“內(nèi)容發(fā)布”的部分負(fù)責(zé)添加、修改、刪除內(nèi)容,開(kāi)發(fā)這些重復(fù)的功能是一件單調(diào)乏味、缺乏創(chuàng)造力的工作。因此, Django 會(huì)根據(jù)定義的模型類完全自動(dòng)地生成管理模塊Django 框架中有一個(gè)非常強(qiáng)大的應(yīng)用功能: 自動(dòng)管理界面。 常被Web平臺(tái)管理者使用,去管理整個(gè)Web平臺(tái)。默認(rèn)情況下,在 settings.py 配置文件中 INSTALLED_APPS 包含以下應(yīng)用程序,為了后續(xù)的開(kāi)發(fā),默認(rèn)這些應(yīng)用程序都是包含在里面的。

python Django框架快速入門教程(后臺(tái)管理)

(1). 數(shù)據(jù)庫(kù)遷移

使用這些 Django 自帶的應(yīng)用程序,需要我們?cè)跀?shù)據(jù)庫(kù)中創(chuàng)建一些數(shù)據(jù)表對(duì)應(yīng),然后才能使用它們。

python manage.py makemigrationspython manage.py migrate

(2). 創(chuàng)建管理員用戶

# 按提示輸入用戶名、郵箱、密碼python manage.py createsuperuser

啟動(dòng)服務(wù)器,通過(guò) “127.0.0.1:8000/admin” 訪問(wèn),輸入上面創(chuàng)建的用戶名、密碼完成登錄進(jìn)入管理站點(diǎn),默認(rèn)可以對(duì) groups、users 進(jìn)行管理

python Django框架快速入門教程(后臺(tái)管理)

(3). 管理界面本地化

編輯 settings.py 文件,設(shè)置編碼、時(shí)區(qū)

LANGUAGE_CODE = ’zh-Hans’TIME_ZONE = ’Asia/Shanghai’

(4). 自定義模型加入后臺(tái)管理

打開(kāi) bookApp/admin.py 文件,注冊(cè)模型

from django.contrib import adminfrom models import Bookadmin.site.register(Book)

刷新管理頁(yè)面,可以對(duì) Book 的數(shù)據(jù)進(jìn)行增刪改查操作 ;問(wèn)題一: python2 版本中, 如果在 str 方法中返回中文,在修改和添加時(shí)會(huì)報(bào) ascii 的錯(cuò)誤在 str() 方法中,將字符串末尾添加 “.encode(’utf-8’)” 進(jìn)行字符串編碼問(wèn)題二: 后臺(tái)管理時(shí), Book管理顯示的是英文, 如何變成中文?

python Django框架快速入門教程(后臺(tái)管理)

# bookApp/models.pyclass Book(models.Model):# ........此處省略# 自定義對(duì)應(yīng)的表名,默認(rèn)表名:bookApp_bookclass Meta:db_table = 'books'# 單數(shù)時(shí)顯示的名稱verbose_name = ’圖書信息’# 復(fù)數(shù)時(shí)顯示的名稱verbose_name_plural = ’圖書信息’

python Django框架快速入門教程(后臺(tái)管理)

(5). 自定義管理頁(yè)面

Django 提供了 admin.ModelAdmin 類通過(guò)定義 ModelAdmin 的子類,來(lái)定義模型在 Admin 界面的顯示方式

# bookApp/admin.pyfrom django.contrib import adminfrom .models import Book, Hero# 書籍自定義管理頁(yè)面class BookAdmin(admin.ModelAdmin):list_display = [’pk’, ’title’, ’pub_date’]list_filter = [’title’]search_fields = [’title’]list_per_page = 10# fields = [’pub_date’, ’title’]fieldsets = [(’基礎(chǔ)信息’, {’fields’: [’title’]}),(’詳細(xì)信息’, {’fields’: [’pub_date’]}), ]# 人物自定義管理頁(yè)面class HeroAdmin(admin.ModelAdmin):list_display = [’id’, ’name’, ’gender’, ’content’]list_filter = [’name’]search_fields = [’name’]list_per_page = 10# 關(guān)聯(lián)注冊(cè)admin.site.register(Book, BookAdmin)admin.site.register(Hero, HeroAdmin)

列表頁(yè)屬性性

ist_display:顯示字段,可以點(diǎn)擊列頭進(jìn)行排序list_display = [’pk’, ’title’, ’pub_date’]list_filter:過(guò)濾字段,過(guò)濾框會(huì)出現(xiàn)在右側(cè)list_filter = [’title’]search_fields:搜索字段,搜索框會(huì)出現(xiàn)在上側(cè)search_fields = [’title’]list_per_page:分頁(yè),分頁(yè)框會(huì)出現(xiàn)在下側(cè)list_per_page = 10

python Django框架快速入門教程(后臺(tái)管理)

添加、修改頁(yè)屬性

fields:屬性的先后順序fields = [’pub_date’, ’title’]fieldsets :屬性分組, 注意: fields和fieldsets 只能設(shè)置一個(gè).fieldsets = [(’基礎(chǔ)信息’, {’fields’: [’title’]}),(’詳細(xì)信息’, {’fields’: [’pub_date’]}), ]

python Django框架快速入門教程(后臺(tái)管理)

關(guān)聯(lián)對(duì)象

對(duì)于 Hero 模型類,有兩種注冊(cè)方式方式一:與 Book 模型類相同方式二:關(guān)聯(lián)注冊(cè)admin.StackedInline : 內(nèi)嵌關(guān)聯(lián)注冊(cè)類admin.TabularInline : 表格 關(guān)聯(lián)注冊(cè)類

# bookApp/admin.py# class HeroInline(admin.TabularInline):class HeroInline(admin.StackedInline):model = Heroextra = 2class BookAdmin(admin.ModelAdmin):list_display = [’pk’, ’title’, ’pub_date’]# .......此處省略部分重復(fù)代碼inlines = [HeroInline]

顯示效果如下:

python Django框架快速入門教程(后臺(tái)管理)

布爾值的顯示

發(fā)布性別的顯示不是一個(gè)直觀的結(jié)果,可以使用方法進(jìn)行封裝# bookApp/models.pyclass Hero(models.Model):#.......此處省略部分重復(fù)代碼def sex(self):if self.gender:return'男'else:return'女'在 admin 注冊(cè)中使用 sex 代替 gender# bookApp/admin.pyclass HeroAdmin(admin.ModelAdmin):list_display = [’id’, ’name’, ’sex’, ’content’]

顯示效果如下:

python Django框架快速入門教程(后臺(tái)管理)

到此這篇關(guān)于python Django框架快速入門(后臺(tái)管理)的文章就介紹到這了,更多相關(guān)python Django入門內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: python Django 框架 Web MVT
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
久久中文字幕av| 国产日韩精品视频一区二区三区| 电影天堂国产精品| 日本精品一区二区三区在线观看视频 | 九九99久久精品在免费线bt| 欧美成人综合| 日韩欧美一区免费| 丰满少妇一区| 国产精品网址| 69堂免费精品视频在线播放| 亚洲精品欧美| 欧美日韩视频网站| 国产欧美日韩影院| 日韩精品一区二区三区免费观看| 国产日产高清欧美一区二区三区| 免费人成网站在线观看欧美高清| 久久婷婷av| jiujiure精品视频播放| 日韩啪啪电影网| 香蕉成人av| 99视频精品全国免费| 精品一区在线| 亚洲欧美日本视频在线观看| 国产综合精品一区| 五月天久久网站| 欧美福利在线| 婷婷视频一区二区三区| 97精品97| 日韩欧美在线中字| 91久久中文| 日韩综合一区二区三区| 欧美日韩1区| 国内精品伊人| 激情五月综合| 亚洲专区视频| 国产精品乱战久久久| 在线视频日韩| 亚洲深夜av| 亚洲一二av| 国产亚洲字幕| а√天堂中文在线资源8| 国产一区2区| 日韩一区欧美| 国产精品精品| 欧美精品自拍| 欧美黑人做爰爽爽爽| 久久国产精品成人免费观看的软件| 欧美不卡高清| 久久影院一区二区三区| 亚洲精品电影| 97久久中文字幕| 日韩二区在线观看| 91亚洲国产高清| 一区二区亚洲视频| 欧美一级鲁丝片| 亚洲精品第一| 欧美精选一区二区三区| 狂野欧美性猛交xxxx| 激情综合自拍| 久久精品资源| 久久国产麻豆精品| 国产精品日韩| 国产欧美日韩综合一区在线播放| 国产精品久久久久久久久久10秀 | 午夜久久99| 国产一区二区三区不卡av| 视频一区欧美精品| 人人香蕉久久| 久久激五月天综合精品| 日韩在线一二三区| 欧美日韩免费观看视频| 奇米色欧美一区二区三区| 玖玖玖国产精品| 亚洲精品1区2区| 日韩午夜黄色| 99亚洲视频| 午夜日韩av| 激情婷婷亚洲| 欧美交a欧美精品喷水| 欧美日韩一区二区三区不卡视频 | 91久久亚洲| 喷白浆一区二区| 久久在线免费| 亚洲黄页一区| 日韩av福利| 欧美日韩国产精品一区二区亚洲| 日韩电影免费网址| 日韩欧美另类一区二区| 精精国产xxxx视频在线野外 | 国产精品一线| 国产亚洲字幕| 美女在线视频一区| 国产精品一级在线观看| 99免费精品| 国产色99精品9i| 国产色噜噜噜91在线精品| 久久成人亚洲| 日本亚洲欧美天堂免费| 91av一区| 欧美久久天堂| 99国产精品视频免费观看一公开| 欧美日韩三区| 日本中文字幕一区二区视频| 国产精品www.| 国产精久久一区二区| 伊人久久亚洲影院| 中文字幕一区二区三区日韩精品 | 亚洲免费一区三区| 久久亚洲视频| 精品视频一二| 国产视频久久| 精品国产午夜| 日韩中文字幕亚洲一区二区va在线| 一级成人国产| 婷婷综合五月| 久久亚洲人体| 视频一区免费在线观看| 国产在线观看www| 亚洲精品97| 国产精品国产一区| 亚洲欧洲国产精品一区| 精品国产a一区二区三区v免费| 五月天久久久| 成人在线视频中文字幕| 99国产一区| 亚洲精品福利电影| 国产毛片一区二区三区| 99riav1国产精品视频| 国产激情在线播放| 日本强好片久久久久久aaa| 五月精品视频| 一区二区三区四区日本视频| 欧美日韩国产一区二区在线观看| 欧美国产三级| 激情综合在线| 老牛国内精品亚洲成av人片 | 日本欧美在线看| 国产一区日韩欧美| 福利一区二区三区视频在线观看| 日韩精品社区| 亚洲精品大全| 亚洲91网站| 日韩一区二区三区免费视频| 欧美专区在线| 99国内精品| 亚洲一区中文| 一区二区三区四区日本视频| 精品精品国产三级a∨在线| 国产精品久久久久77777丨| 国产精品久久久久久妇女 | 成人羞羞在线观看网站| 亚洲三级毛片| 中文字幕亚洲影视| 亚洲精品国产精品粉嫩| 综合激情网站| 日韩av网站在线观看| 久久国产乱子精品免费女| 国产精品一区二区av日韩在线| 国产精品国码视频| 老鸭窝一区二区久久精品| 国产精品a久久久久| 免费观看在线综合色| 久久久久国产一区二区| 久久久久久自在自线| 亚洲91视频| 最近国产精品视频| 国产亚洲一区| 亚洲成a人片| se01亚洲视频 | a国产在线视频| 日韩欧美中文在线观看| 免费日韩av| 一区二区精品| 日韩成人精品一区| 精品国产第一福利网站| 日本少妇精品亚洲第一区| 亚洲a在线视频| 精品亚洲免a| 日韩精品欧美大片| 99国产精品免费视频观看| 国产欧美午夜| 免费国产亚洲视频| 一区在线免费观看| 久久国产免费| 在线看片福利| 日韩中文字幕无砖| 精精国产xxxx视频在线野外| 久久www成人_看片免费不卡| 99久久www免费| 日韩欧美2区| 欧美色图一区| 99视频+国产日韩欧美| 国产精品男女| 中文一区二区| 国产一区二区三区国产精品| 首页亚洲欧美制服丝腿| 久久精品日韩欧美| 热久久免费视频| 日本蜜桃在线观看视频| 欧美a在线观看|