Django框架工作流

Python常用的web框架包含:Django、Flask、Tornado等,然,Django框架的功能強大,尤其各種庫,開箱即用。

python與Django對應版本

在這裏插入圖片描述What Python version should I use with Django?¶

Python 3 is recommended. Django 1.11 is the last version to support Python 2.7. Support for Python 2.7 and Django 1.11 ends in 2020.

Since newer versions of Python are often faster, have more features, and are better supported, the latest version of Python 3 is recommended.

You don’t lose anything in Django by using an older release, but you don’t take advantage of the improvements and optimizations in newer Python releases. Third-party applications for use with Django are, of course, free to set their own version requirements.

https://docs.djangoproject.com/en/dev/faq/install/#what-python-version-can-i-use-with-django

項目管理

  • 創建項目
# 命令:django-admin  startproject  項目名稱   
django-admin  startproject  BMS

在這裏插入圖片描述

  • BMS:項目名稱
  • BMS/init.py:一個空文件,用於標識一個目錄爲Python的標準包
  • BMS/setting.py:Django項目的配置文件,包括Django模塊應用配置、數據庫配置、模板配置等
  • BMS/urls.py:Django項目的URL聲明
  • BMS/wsgi.py:與WSGI兼容的Web服務器爲你的項目提供服務的入口點
  • manage.py:一個命令行工具,在使用Django項目時以不同的方式進行交互

應用管理

創建完項目之後,利用命令行工具 manage.py創建應用App,一個Django項目可包含多個App

# 命令:python3 startapp App名稱
python3 manage.py startapp sign

在這裏插入圖片描述

  • sign/migrations/:用於記錄models中數據的變更
  • admin.py:App後臺管理,映射models中的數據到Django自帶的admin後臺
  • apps.py:App配置信息,用於應用程序的配置,在新的Django版本中新增文件
  • models.py:數據庫映射庫,Django的模型文件,創建應用程序數據表模型(對應數據庫的相關操作)
  • tests.py:創建Django測試用例
  • views.py:Django的視圖文件,控制向前端頁面展示的內容

運行項目

創建完項目和App之後,接着利用manage.py命令行工具,指定端口號爲:8001,啓動當前項目

# 啓動項目,端口號指定:8001
python3 manage.py runserver 8001

最後,在瀏覽器值中輸入:http://localhost:8001,即可查看項目的運行情況
在這裏插入圖片描述

Hello Django

衆所周知,第一個例子總是 hello world

未使用模板,指定路由
  • 配置BMS/settings.py,將sign應用添加到項目中
...
# Application definition

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'sign',
]
...
  • 在 BMS/urls.py 添加路由配置

(1) 方法一:通過 path 路由

from django.contrib import admin
from django.urls import path
from sign import views    # 導入sign應用views文件

urlpatterns = [
    path('admin/', admin.site.urls),
    path('index',views.index)
]

(2) 方法二:通過 url 路由

from django.contrib import admin
from django.urls import path
from sign import views    # 導入sign應用的views視圖
from django.conf.urls import url

urlpatterns = [
    path('admin/', admin.site.urls),
    #path('index',views.index),
    url(r'^index$',views.index),  # 添加 index/路徑配置
    # 字符串前面加‘r’是爲了防止字符串中出現類似“\t”字符時被轉義
    # ^  匹配字符串開頭
    # $  匹配字符串結尾
]

上述兩種方法都能實現路由指向功能,選其中之一即可。

  • 在 sign/view.py 定義index函數,並通過HttpResponse類向客戶端(瀏覽器)返回字符串“Hello Django!”
    HttpResponse類在django.http.HttpResonse中,已字符串的形式傳遞給客戶端
from django.shortcuts import render
from django.http import HttpResponse

# Create your views here.

def index(request):
    return HttpResponse('<h1 style="color:blue">hello Django without model!</h1>')

在這裏插入圖片描述

使用模塊,指定路由

現在呢,通過HTML頁面來代替字符串,可以說是重構代碼

  • 在應用 sign/ 目錄下創建 template/index.html 文件。(Django默認找templates/目錄下的html文件,請規範命名!)
#  sign/template/index.html 
<html>
  <head>
    <title>Django Page Test</title>
  <head>
  <style type='text/css'>
     #text{
        color:green;
        }
  </style>
  <body>
  <h1 id='text'>Hello Django,I'm index.html!<h1>
  </body>

</html>
  • 修改 sign/view.py 視圖文件中的 index 函數
# sign/view.py
from django.shortcuts import render
from django.http import HttpResponse

# Create your views here.

def index(request):
    return render(request,'index.html')

這裏使用 Django 的 render 函數,request爲請求對象,“index.html”作爲返回客戶端的html頁面

  • 刷新瀏覽器
    在這裏插入圖片描述
此時,目錄樹結構如下

在這裏插入圖片描述

Django工作流

Django 處理一個請求的過程如下:

  • Django 使用的是 根 URLconf 模塊。這個值通常是通過 ROOT——URLCONF 設置 (settings.py文件)
  • Django 加載 URLconf模塊(urls.py文件),並尋找可用的 urlpatterns
  • Django 依次匹配每個 URL 模式,在與請求的URL匹配的第一個模式處停下來
  • 一旦其中的一個正則表達匹配上,則Django將請求對應的視圖函數處理
  • 如果沒有匹配到正則表達式,或者過程中拋出一個異常,則Django將調用一個適當的錯誤處理視圖

在這裏插入圖片描述

MTV 開發模式

MVC 模式概念

把數據存取邏輯、業務邏輯和表現邏輯組合在一起的概念被稱爲軟件架構的 Model-View-Controller(MVC)模式。在這個在模式中:

  • Model代表數據存取層
  • View代表的是系統中選擇顯示什麼和怎麼顯示的部分
  • Controller指的是系統中根據用戶輸入及需要訪問模型,以決定使用哪個視圖的哪部分
MTV 框架

分析Django中M、V和C各自的含義:

  • M代表模型(Model):數據存取層,數據存取部分,有Django數據庫層處理
  • V代表模板(Template):表現層,選擇顯示哪些數據以及怎樣顯示的部分,由視圖和模板處理
  • C代表視圖(View):業務邏輯層,根據用戶輸入委派視圖的部分,由Django框架根據 URLconf設置,對給定URL調用適當的Python函數,可以看成是模型與模板之間的橋樑

在Django對 MVC 的詮釋中,視圖用來描述要展現給用戶的數據;而不是數據如何展現以及展現哪些數據。而 Ruby on Rails及一些同類框架提倡控制器負責決定向用戶展現哪些數據,而視圖僅決定如何展現數據,而不是展現哪些數據。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章