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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Django框架简介

發(fā)布時(shí)間:2025/3/8 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Django框架简介 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

?Django框架簡(jiǎn)介

MVC框架和MTV框架

MVC,全名是Model View Controller,是軟件工程中的一種軟件架構(gòu)模式,把軟件系統(tǒng)分為三個(gè)基本部分:模型(Model)、視圖(View)和控制器(Controller),具有耦合性低、重用性高、生命周期成本低等優(yōu)點(diǎn)。

想要更詳細(xì)的了解MVC模式? >>?點(diǎn)我

Django框架的設(shè)計(jì)模式借鑒了MVC框架的思想,也是分成三部分,來(lái)降低各個(gè)部分之間的耦合性。

Django框架的不同之處在于它拆分的三部分為:Model(模型)、Template(模板)和View(視圖),也就是MTV框架。

Django的MTV模式

? ? ? ?Model(模型):負(fù)責(zé)業(yè)務(wù)對(duì)象與數(shù)據(jù)庫(kù)的對(duì)象(ORM)

? ? ? ?Template(模版):負(fù)責(zé)如何把頁(yè)面展示給用戶

? ? ? ?View(視圖):負(fù)責(zé)業(yè)務(wù)邏輯,并在適當(dāng)?shù)臅r(shí)候調(diào)用Model和Template

此外,Django還有一個(gè)urls分發(fā)器,它的作用是將一個(gè)個(gè)URL的頁(yè)面請(qǐng)求分發(fā)給不同的view處理,view再調(diào)用相應(yīng)的Model和Template

Django框架圖示

?

?

Django安裝和基本使用

安裝Django,指定國(guó)內(nèi)pip源

pip3 install django==1.11.18 -i https://pypi.douban.com/simple/

Django官網(wǎng)下載頁(yè)面

?

創(chuàng)建Django項(xiàng)目

下面的命令創(chuàng)建了一個(gè)名為"webapp"的Django 項(xiàng)目:

django-admin startproject webapp

?

項(xiàng)目創(chuàng)建完成,會(huì)在當(dāng)前目錄下生成一個(gè)目錄

webapp/ ├── manage.py # 管理文件 └── mysite    # 項(xiàng)目目錄├── __init__.py├── settings.py # 配置├── urls.py # 路由 --> URL和函數(shù)的對(duì)應(yīng)關(guān)系└── wsgi.py # runserver命令就使用wsgiref模塊做簡(jiǎn)單的web server

?

運(yùn)行Django項(xiàng)目:

默認(rèn)是8000端口

[root@yunwei-test webapp]# python3 manage.py runserver 0.0.0.0:9999

?

pycharm創(chuàng)建Django項(xiàng)目

pycharm會(huì)自動(dòng)創(chuàng)建模板目錄

?

啟動(dòng)項(xiàng)目

?

?

Django settings

# 項(xiàng)目根目錄 BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))# ip地址訪問(wèn)權(quán)限 ALLOWED_HOSTS = ['*'] # app注冊(cè)列表 INSTALLED_APPS = ['django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles', ]# 中間件 MIDDLEWARE = ['django.middleware.security.SecurityMiddleware','django.contrib.sessions.middleware.SessionMiddleware','django.middleware.common.CommonMiddleware','django.middleware.csrf.CsrfViewMiddleware','django.contrib.auth.middleware.AuthenticationMiddleware','django.contrib.messages.middleware.MessageMiddleware','django.middleware.clickjacking.XFrameOptionsMiddleware', ]# 模板文件(HTML文件) TEMPLATES [{'DIRS': [os.path.join(BASE_DIR, 'templates')] # HTML文件路徑,pycharm會(huì)自動(dòng)創(chuàng)建和添加。 命令行創(chuàng)建項(xiàng)目需要自己添加 }]# 數(shù)據(jù)庫(kù)配置 DATABASES = {'default': {'ENGINE': 'django.db.backends.sqlite3', # 數(shù)據(jù)庫(kù)類型'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), # 要連接的庫(kù)} }# 靜態(tài)文件別名,以/static/開(kāi)頭 STATIC_URL = '/static/' STATICFILES_DIRS = [os.path.join(BASE_DIR,'static') # 實(shí)際的靜態(tài)文件目錄路徑 ] django配置文件

?

Django創(chuàng)建 app

一個(gè)Django項(xiàng)目可以分為很多個(gè)APP,用來(lái)隔離不同功能模塊的代碼。

python manage.py startapp app01

?

執(zhí)行命令后,項(xiàng)目目錄下多出一個(gè)app01的文件夾,目錄結(jié)構(gòu)如下:

[root@yunwei-test webapp]# tree app01/ app01/ ├── admin.py        # admin管理后臺(tái) ├── apps.py         # app ├── __init__.py   ├── migrations        # 數(shù)據(jù)庫(kù)遷移的文件 │?? └── __init__.py     ├── models.py        # ORM ├── tests.py       └── views.py        # 函數(shù)功能

?

?在settings配置文件中注冊(cè)app

# 在app列表中添加上
INSTALLED_APPS = ['app01.apps.App01Config' ]

?

?

?

Django函數(shù)

from django.shortcuts import HttpResponse, render, redirect

?

參數(shù)

必須接受一個(gè)參數(shù) request

所有和瀏覽器請(qǐng)求相關(guān)的都在 request 中 request.method GET POST(大寫)       # 獲取請(qǐng)求方式
request.POST.
get('input中的name屬性值') # 獲取form表單提交的數(shù)據(jù),字符串類型(form表單使用POST提交時(shí))
request.GET              # url地址上攜帶的參數(shù) 例如:http:
//127.0.0.1/login/?user=xxx&pwd=xxx 獲取到的數(shù)據(jù): <QueryDict: {'user': ['xxx'], 'pwd': ['xxx']}>

request.path_info                # url路徑

返回值

必須是一個(gè)HttpResponse對(duì)象

?

HttpResponse

內(nèi)部傳入一個(gè)字符串參數(shù),返回給瀏覽器。

例如:

def index(request):# 業(yè)務(wù)邏輯代碼return HttpResponse("OK")

?

render

除request參數(shù)外還接受一個(gè)待渲染的模板文件和一個(gè)保存具體數(shù)據(jù)的字典參數(shù)。

將數(shù)據(jù)填充進(jìn)模板文件,最后把結(jié)果返回給瀏覽器。(類似于我們上面用到的jinja2)

例如:

def index(request):# 業(yè)務(wù)邏輯代碼return render(request, "index.html", {"name": "alex", "hobby": ["燙頭", "泡吧"]})

?

redirect重定向

接受一個(gè)URL參數(shù),表示跳轉(zhuǎn)到指定的URL。

例如:

def index(request):# 業(yè)務(wù)邏輯代碼return redirect("/home/")

?

重定向

return redirect('/home/') ?返回瀏覽器狀態(tài)碼:302? ?和響應(yīng)頭:Location:?/home/ 瀏覽器會(huì)再次向返回的URL地址發(fā)起一次GET請(qǐng)求,獲取跳轉(zhuǎn)后的頁(yè)面。

?

?

轉(zhuǎn)載于:https://www.cnblogs.com/root0/p/10751020.html

總結(jié)

以上是生活随笔為你收集整理的Django框架简介的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。