最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2021年07月19日 10:49:29   作者:Lee木川  
Django 是一個開放源代碼的 Web 應用框架,由 Python 寫成,今天通過本文給大家介紹python Django框架快速入門教程,適用后臺管理,感興趣的朋友跟隨小編一起看看吧

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

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

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

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

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

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

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

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

django-admin startproject BookManage

進入項目目錄,目錄結(jié)構(gòu)如下圖:

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

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

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

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

python3 manage.py startapp bookApp

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

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

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

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

(3) 路由規(guī)則

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

# bookApp/urls.py
from django.conf.urls import url
from . import views
urlpatterns = [
# 當用戶訪問bookApp應用的主頁時, 執(zhí)行視圖函數(shù)index,反向根據(jù)名稱獲取url地址;
url(r'^$', views.index, name='index'),
]

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

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

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

(4) 效果展示

啟動服務器

python3 manage.py runserver

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

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

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

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

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

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

在 BookManage/settings.py 文件中,通過DATABASES項進行數(shù)據(jù)庫設(shè)置:

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

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

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

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

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

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

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

# bookApp/models.py
from 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_book
class 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_hero
class Meta:
db_table = "heros"

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

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

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

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

python manage.py makemigrations

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

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

python manage.py migrate

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

$ mysql -uroot -pwestos
MariaDB [(none)]> use BookManage
MariaDB [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ù)庫模型基本操作

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

python manage.py shell

引入需要的包:

from bookApp.models import Hero, Book

查詢所有圖書信息:

Book.objects.all()

新建圖書信息:

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

查找圖書信息:

book = Book.objects.get(pk=1)
book.id
book.title
book.pub_date

修改圖書信息:

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

刪除圖書信息:

book.delete()

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

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

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

book.hero_set.all()

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

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

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

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

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

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

python manage.py makemigrations
python manage.py migrate

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

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

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

 (3). 管理界面本地化

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

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

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

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

from django.contrib import admin
from models import Book
admin.site.register(Book)

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

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

(5). 自定義管理頁面

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

# bookApp/admin.py
from django.contrib import admin
from .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 = [('基礎(chǔ)信息', {'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
# 關(guān)聯(lián)注冊
admin.site.register(Book, BookAdmin)
admin.site.register(Hero, HeroAdmin)

 列表頁屬性性

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

 添加、修改頁屬性

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

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

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

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

顯示效果如下:

 布爾值的顯示

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

 顯示效果如下:

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

相關(guān)文章

  • Python格式化輸出%s和%d

    Python格式化輸出%s和%d

    本篇文章主要介紹了Python格式化輸出%s和%d的實例案例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-05-05
  • requests庫post方法如何傳params類型的參數(shù)(最新推薦)

    requests庫post方法如何傳params類型的參數(shù)(最新推薦)

    在使用requests庫的post方法時,params類型的參數(shù)用于在URL中作為查詢字符串傳遞,與data或json參數(shù)不同,后者是放在請求體中的,params參數(shù)接受一個字典或包含鍵值對的序列,本文給大家介紹requests庫post方法怎么傳params類型的參數(shù),感興趣的朋友一起看看吧
    2025-03-03
  • Python OpenCV繪制各類幾何圖形詳解

    Python OpenCV繪制各類幾何圖形詳解

    這篇文章將詳細講解如何使用OpenCV繪制各類幾何圖形,包括cv2.line()、v2.circle()、cv2.rectangle()、cv2.ellipse()、cv2.polylines()、cv2.putText()函數(shù)。需要的可以參考一下
    2022-01-01
  • Python應用領(lǐng)域和就業(yè)形勢分析總結(jié)

    Python應用領(lǐng)域和就業(yè)形勢分析總結(jié)

    在本篇文章總我們給大家整理了關(guān)于Python應用領(lǐng)域和就業(yè)形勢分析以及圖文介紹,需要的朋友們可以參考下。
    2019-05-05
  • Python3 實現(xiàn)減少可調(diào)用對象的參數(shù)個數(shù)

    Python3 實現(xiàn)減少可調(diào)用對象的參數(shù)個數(shù)

    今天小編就為大家分享一篇Python3 實現(xiàn)減少可調(diào)用對象的參數(shù)個數(shù),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • python如何禁用print輸出

    python如何禁用print輸出

    這篇文章主要介紹了python如何禁用print輸出問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • python數(shù)據(jù)結(jié)構(gòu)算法分析

    python數(shù)據(jù)結(jié)構(gòu)算法分析

    這篇文章主要介紹了python數(shù)據(jù)結(jié)構(gòu)算法分析,在python的數(shù)據(jù)結(jié)構(gòu)的章節(jié)中,我們上次學習到了python面向?qū)ο蟮乃枷耄次覀兿胗贸绦騺韺崿F(xiàn)一個東西,我們需是用對象的特征來描述我們想構(gòu)建的對象。感興趣的小伙伴可以查看下面內(nèi)容</P><P>
    2021-12-12
  • python使用遞歸實現(xiàn)斐波那契數(shù)列的示例詳解

    python使用遞歸實現(xiàn)斐波那契數(shù)列的示例詳解

    這篇文章主要給大家介紹了python使用遞歸實現(xiàn)斐波那契數(shù)列的示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者使用Python具有一定的參考學習價值,需要的朋友們下面來一起來學習吧
    2024-01-01
  • Python?文件操作方法總結(jié)

    Python?文件操作方法總結(jié)

    這篇文章主要介紹了Python?文件操作方法總結(jié),文章基于python的基礎(chǔ)展開Python?文件操作方法,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-05-05
  • 基于Python實現(xiàn)一個AI物體識別

    基于Python實現(xiàn)一個AI物體識別

    計算機視覺是其中的一大領(lǐng)域?,應用場景也比較多,這篇文章主要為大家詳細介紹了如何基于Python實現(xiàn)一個AI物體識別功能,需要的小伙伴可以了解下
    2024-11-11

最新評論

子长县| 遂昌县| 天津市| 上犹县| 香格里拉县| 贵德县| 牙克石市| 霍林郭勒市| 阜南县| 土默特右旗| 井研县| 灵宝市| 衢州市| 南开区| 浦县| 柘荣县| 嘉义市| 德保县| 呼伦贝尔市| 喀什市| 万山特区| 虞城县| 望城县| 惠安县| 淮北市| 洪洞县| 张家界市| 利辛县| 渭南市| 承德县| 盐边县| 循化| 壤塘县| 女性| 宜春市| 保靖县| 伊吾县| 葫芦岛市| 益阳市| 仲巴县| 彩票|