电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

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

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

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

Django 是一個開放源代碼的 Web 應用框架,由 Python 寫成。

Django 遵守 BSD 版權,初次發布于 2005 年 7 月, 并于 2008 年 9 月發布了第一個正式版本 1.0 。

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

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

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

第一步:項目的創建與運行

第一次使用 Django ,那么你必須要照顧一些初始設置。也就是說,您需要自動生成一些建立 Django項目的代碼。從命令行 cd 到您要存儲代碼的目錄,然后運行以下命令:

django-admin startproject BookManage

進入項目目錄,目錄結構如下圖:

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

目錄說明:manage.py :一個命令行工具,可以使你用多種方式對 Django 項目進行交互內層的目錄:項目的真正的Python包__init__.py :一個空文件,它告訴Python這個目錄應該被看做一個Python包settings.py :項目的配置urls.py :項目的URL聲明wsgi.py :項目與 WSGI 兼容的Web服務器入口

第二步:應用的創建和使用

(1) 創建第一個應用程序

Django 自帶一個實用程序,可以自動生成應用程序的基本目錄結構,因此您可以專注于編寫代碼而不是創建目錄。在一個項目中可以創建一到多個應用,每個應用進行一種業務處理創建應用的命令:

python3 manage.py startapp bookApp

應用的目錄結構如下圖 :

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

(2) 編寫第一個視圖函數

打開文件 bookApp/views.py 并放入以下Python代碼:

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

(3) 路由規則

在 bookApp 目錄中創建一個 URLconf ,創建一個名為 urls.py 。

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

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

# BookManage/urls.pyfrom django.conf.urls import urlfrom django.contrib import adminfrom django.urls import path, includeurlpatterns = [path(’admin/’, admin.site.urls),# 當用戶訪問的url地址以book開頭, 請訪問bookApp.urls這個url配置文件進行匹配并執行對應的視圖函數.url(r’^book/’, include(’bookApp.urls’)),]

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

(4) 效果展示

啟動服務器

python3 manage.py runserver

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

訪問 url 地址: http:// 127.0.0.1:8000/book/ 如果看到主頁內容 圖書管理系統 即成功

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

第三步: 項目的數據庫模型

(1). 數據庫創建

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

(2). 連接 MySQL 數據庫配置

在 settings.py 文件中,通過DATABASES項進行數據庫設置Django 支持的數據庫包括: sqlite 、 mysql 等主流數據庫Django 默認使用 **SQLite** 數據庫Django數據庫設置參考文檔其中ENGINE設置為數據庫后端使用。內置數據庫后端有:’django.db.backends.postgresql’’django.db.backends.mysql’’django.db.backends.sqlite3’’django.db.backends.oracle’

在 BookManage/settings.py 文件中,通過DATABASES項進行數據庫設置:

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

打開 BookManage/__init__.py ,寫入以下代碼導入 pymysql :

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

(2). 創建數據庫模型

本示例完成“圖書-英雄”信息的維護,需要存儲兩種數據:圖書、英雄

圖書表結構設計: 表名: Book圖書名稱: title圖書發布時間: pub_date英雄表結構設計: 表名: Hero英雄姓名: name英雄性別: gender英雄簡介: hcontent所屬圖書: hbook

圖書-英雄的關系為一對多

# bookApp/models.pyfrom django.db import models# Create your models here.class Book(models.Model):# 定義屬性:默認主鍵自增id字段可不寫title = models.CharField(max_length=20)pub_date = models.DateTimeField()# 定義默認輸出格式def __str__(self):return '%d' % self.title# 自定義對應的表名,默認表名: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# 自定義對應的表名,默認表名:bookApp_heroclass Meta:db_table = 'heros'

(3). 生成數據庫表

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

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

生成遷移文件:根據模型類生成 sql 語句

python manage.py makemigrations

產生的遷移文件如下:

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

執行遷移:執行 sql 語句生成數據表

python manage.py migrate

數據庫中查看數據庫表是否創建成功?

$ 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). 數據庫模型基本操作

現在進入交互式的Python shell,并使用 Django 提供的免費 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()

添加關聯對象

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

獲得關聯集合:返回當前book對象的所有hero

book.hero_set.all()

有一個 Hero 存在,必須要有一個 Book 對象,提供了創建關聯的數據:

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

第四步: 啟用后臺 Admin 站點管理、

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

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

(1). 數據庫遷移

使用這些 Django 自帶的應用程序,需要我們在數據庫中創建一些數據表對應,然后才能使用它們。

python manage.py makemigrationspython manage.py migrate

(2). 創建管理員用戶

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

啟動服務器,通過 “127.0.0.1:8000/admin” 訪問,輸入上面創建的用戶名、密碼完成登錄進入管理站點,默認可以對 groups、users 進行管理

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

(3). 管理界面本地化

編輯 settings.py 文件,設置編碼、時區

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

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

打開 bookApp/admin.py 文件,注冊模型

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

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

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

# bookApp/models.pyclass Book(models.Model):# ........此處省略# 自定義對應的表名,默認表名:bookApp_bookclass Meta:db_table = 'books'# 單數時顯示的名稱verbose_name = ’圖書信息’# 復數時顯示的名稱verbose_name_plural = ’圖書信息’

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

(5). 自定義管理頁面

Django 提供了 admin.ModelAdmin 類通過定義 ModelAdmin 的子類,來定義模型在 Admin 界面的顯示方式

# bookApp/admin.pyfrom django.contrib import adminfrom .models import Book, Hero# 書籍自定義管理頁面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 = [(’基礎信息’, {’fields’: [’title’]}),(’詳細信息’, {’fields’: [’pub_date’]}), ]# 人物自定義管理頁面class HeroAdmin(admin.ModelAdmin):list_display = [’id’, ’name’, ’gender’, ’content’]list_filter = [’name’]search_fields = [’name’]list_per_page = 10# 關聯注冊admin.site.register(Book, BookAdmin)admin.site.register(Hero, HeroAdmin)

列表頁屬性性

ist_display:顯示字段,可以點擊列頭進行排序list_display = [’pk’, ’title’, ’pub_date’]list_filter:過濾字段,過濾框會出現在右側list_filter = [’title’]search_fields:搜索字段,搜索框會出現在上側search_fields = [’title’]list_per_page:分頁,分頁框會出現在下側list_per_page = 10

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

添加、修改頁屬性

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

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

關聯對象

對于 Hero 模型類,有兩種注冊方式方式一:與 Book 模型類相同方式二:關聯注冊admin.StackedInline : 內嵌關聯注冊類admin.TabularInline : 表格 關聯注冊類

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

顯示效果如下:

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

布爾值的顯示

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

顯示效果如下:

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

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

標簽: python Django 框架 Web MVT
相關文章:
主站蜘蛛池模板: 电位器_轻触开关_USB连接器_广东精密龙电子科技有限公司 | 媒介云-全网整合营销_成都新闻媒体发稿_软文发布平台 | 语料库-提供经典范文,文案句子,常用文书,您的写作得力助手 | 广州展览制作|展台制作工厂|展览设计制作|展览展示制作|搭建制作公司 | 真空吸污车_高压清洗车厂家-程力专用汽车股份有限公司官网 | 留学生辅导网-在线课程论文辅导-留学生挂科申诉机构 | 蓝米云-专注于高性价比香港/美国VPS云服务器及海外公益型免费虚拟主机 | 机械加工_绞车配件_立式离心机_减速机-洛阳三永机械厂 | 欧美日韩国产一区二区三区不_久久久久国产精品无码不卡_亚洲欧洲美洲无码精品AV_精品一区美女视频_日韩黄色性爱一级视频_日本五十路人妻斩_国产99视频免费精品是看4_亚洲中文字幕无码一二三四区_国产小萍萍挤奶喷奶水_亚洲另类精品无码在线一区 | 生物风-销售载体,基因,质粒,ATCC细胞,ATCC菌株等,欢迎购买-百风生物 | 海水晶,海水素,海水晶价格-潍坊滨海经济开发区强隆海水晶厂 | EPDM密封胶条-EPDM密封垫片-EPDM生产厂家| 油罐车_加油机_加油卷盘_加油机卷盘_罐车人孔盖_各类球阀_海底阀等车用配件厂家-湖北华特专用设备有限公司 | Brotu | 关注AI,Web3.0,VR/AR,GPT,元宇宙区块链数字产业 | 大数据营销公司_舆情监测软件_上海SEO公司-文军营销官网 | 无刷电机_直流无刷电机_行星减速机-佛山市藤尺机电设备有限公司 无菌检查集菌仪,微生物限度仪器-苏州长留仪器百科 | 车件|铜件|车削件|车床加工|五金冲压件-PIN针,精密车件定制专业厂商【东莞品晔】 | 山东风淋室_201/304不锈钢风淋室净化设备厂家-盛之源风淋室厂家 翻斗式矿车|固定式矿车|曲轨侧卸式矿车|梭式矿车|矿车配件-山东卓力矿车生产厂家 | 带锯机|木工带锯机圆木推台锯|跑车带锯机|河北茂业机械制造有限公司| | 电气控制系统集成商-PLC控制柜变频控制柜-非标自动化定制-电气控制柜成套-NIDEC CT变频器-威肯自动化控制 | 质构仪_鱼糜弹性仪-上海腾拔仪器科技有限公司 | 即用型透析袋,透析袋夹子,药敏纸片,L型涂布棒-上海桥星贸易有限公司 | 鑫铭东办公家具一站式定制采购-深圳办公家具厂家直销 | 电伴热系统施工_仪表电伴热保温箱厂家_沃安电伴热管缆工业技术(济南)有限公司 | 锡膏喷印机-全自动涂覆机厂家-全自动点胶机-视觉点胶机-深圳市博明智控科技有限公司 | 压片机_高速_单冲_双层_花篮式_多功能旋转压片机-上海天九压片机厂家 | 福兰德PVC地板|PVC塑胶地板|PVC运动地板|PVC商用地板-中国弹性地板系统专业解决方案领先供应商! 福建成考网-福建成人高考网 | 纸箱抗压机,拉力机,脂肪测定仪,定氮仪-山东德瑞克仪器有限公司 | 冲锋衣滑雪服厂家-冲锋衣定制工厂-滑雪服加工厂-广东睿牛户外(S-GERT) | 干粉砂浆设备-干粉砂浆生产线-干混-石膏-保温砂浆设备生产线-腻子粉设备厂家-国恒机械 | 酒糟烘干机-豆渣烘干机-薯渣烘干机-糟渣烘干设备厂家-焦作市真节能环保设备科技有限公司 | 电缆接头_防水接头_电缆防水接头_防水电缆接头_上海闵彬 | 南京种植牙医院【官方挂号】_南京治疗种植牙医院那个好_南京看种植牙哪里好_南京茀莱堡口腔医院 尼龙PA610树脂,尼龙PA612树脂,尼龙PA1010树脂,透明尼龙-谷骐科技【官网】 | 数控车床-立式加工中心-多功能机床-小型车床-山东临沂金星机床有限公司 | 商秀—企业短视频代运营_抖音企业号托管 | 防火门|抗爆门|超大门|医疗门|隔声门-上海加汇门业生产厂家 | 蜂窝块状沸石分子筛-吸附脱硫分子筛-萍乡市捷龙环保科技有限公司 | 防爆鼓风机-全风-宏丰鼓风机-上海梁瑾机电设备有限公司 | 切铝机-数控切割机-型材切割机-铝型材切割机-【昆山邓氏精密机械有限公司】 | 无压烧结银_有压烧结银_导电银胶_导电油墨_导电胶-善仁(浙江)新材料 | 蒸压釜_蒸养釜_蒸压釜厂家-山东鑫泰鑫智能装备有限公司 |