django框架預備知識

內容:css

1.web預備知識html

2.django介紹python

3.web框架的本質及分類mysql

4.django安裝與基本設置web

 

 

 

1.web預備知識正則表達式

HTTP協議:http://www.javashuo.com/article/p-shmfswju-y.htmlsql

關於web的本質:http://www.cnblogs.com/wyb666/p/9034042.html數據庫

如何自定義web框架:http://www.cnblogs.com/wyb666/p/9038644.htmldjango

瞭解cookie和session:http://www.javashuo.com/article/p-ceqcahvy-ba.html瀏覽器

 

 

2.django介紹

(1)django介紹

Python的WEB框架有Django、Tornado、Flask 等多種,Django相較與其餘WEB框架其優點爲:大而全,框架自己集成了ORM、模型綁定、模板引擎、緩存、Session等諸多功能。在Python各類web框架中,Django的文檔最完善、市場佔有率最高、招聘職位最多!

 

(2)MVC和MTV

MVC是衆所周知的模式,即:將應用程序分解成三個組成部分:model(模型),view(視圖),和 controller(控制 器)。其中:

  • M——管理應用程序的狀態(一般存儲到數據庫中),並約束改變狀態的行爲(或者叫作「業務規則」)
  • C——接受外部用戶的操做,根據操做訪問模型獲取數據,並調用「視圖」顯示這些數據。控制器是將「模型」和「視圖」隔離,併成爲兩者之間的聯繫紐帶
  • V——負責把數據格式化後呈現給用戶

Django也是一個MVC框架。可是在Django中,控制器接受用戶輸入的部分由框架自行處理,因此 Django 裏更關注的是模型(Model)、模板(Template)和視圖(Views),稱爲 MTV模式:

  • M 表明模型(Model),即數據存取層。 該層處理與數據相關的全部事務: 如何存取、如何驗證有效性、包含哪些行爲以及數據之間的關係等
  • T 表明模板(Template),即表現層。 該層處理與表現相關的決定: 如何在頁面或其餘類型文檔中進行顯示
  • V 表明視圖(View),即業務邏輯層。 該層包含存取模型及調取恰當模板的相關邏輯。 你能夠把它看做模型與模板之間的橋樑

 

(3)django的優缺點

優勢:

  • 完美的文檔,Django的成功很大一部分緣由要歸功於Django近乎完美的官方文檔(包括Djangobook)
  • 全套的解決方案,Django象Rails同樣,提供全套的解決方案(full-stackframework + batteries included),基本要什麼有什麼(好比:cache、session、feed、orm、geo、auth),並且所有Django本身造,開發網站應手的工具Django基本都給你作好
  • 強大的URL路由配置,Django讓你能夠設計出很是優雅的URL,在Django裏基本能夠跟醜陋的GET參數說拜拜
  • 自助管理後臺,admin interface是Django裏比較吸引眼球的一項contrib,讓你幾乎不用寫一行代碼就擁有一個完整的後臺管理界面。

 

缺點(源自Django堅持本身造全部的輪子,整個系統相對封閉):

  • 系統緊耦合,若是你以爲Django內置的某項功能不是很好,想用喜歡的第三方庫來代替是很難的
  • Django自帶的ORM遠不如SQLAlchemy強大,除了在Django這一畝三分地,SQLAlchemy是Python事實上的ORM標準,其它框架都支持SQLAlchemy
  • Template功能比較弱,不能插入Python代碼,要寫複雜一點的邏輯須要另外用Python實現Tag或Filter
  • URL配置雖然強大,但所有要手寫,這一點跟Rails的Conventionover configuration的理念徹底相左,高手和初識Django的人配出來的URL會有很大差別

 

Django大包大攬,用它來快速開發一些Web運用是很不錯的。若是你順着Django的設計哲學來,你會以爲Django很好用,越用越爽;相反,你若是不能融入或接受Django的設計哲學,你用Django必定會很痛苦,趁早放棄的好

 

(4)django的組件

Django框架的核心包括:一個 面向對象的映射器,用做數據模型和關聯性數據庫間的媒介(ORM);一個基於正則表達式的URL分發器;一個視圖系統,用於處理請求;以及一個模板系統

核心框架中還包括:

  • 一個輕量級的、獨立的Web服務器,用於開發和測試
  • 一個表單序列化及驗證系統,用於HTML表單和適於數據庫存儲的數據之間的轉換
  • 一個緩存框架,並有幾種緩存方式可供選擇
  • 中間件支持,容許對請求處理的各個階段進行干涉
  • 內置的分發系統容許應用程序中的組件採用預約義的信號進行相互間的通訊
  • 一個序列化系統,可以生成或讀取採用XML或JSON表示的Django模型實例
  • 一個用於擴展模板引擎的能力的系統

另外Django 包含了不少應用在它的"contrib"包中,這些包括:

  • 一個可擴展的認證系統
  • 動態站點管理頁面
  • 一組產生 RSS 和 Atom 的工具
  • 一個靈活的評論系統
  • 產生Google 站點地圖 (Google Sitemaps)的工具
  • 防止跨站請求僞造(cross-site request forgery)的工具
  • 一套支持輕量級標記語言(Textile和Markdown)的模板庫
  • 一套協助建立地理信息系統(GIS)的基礎框架

 

 

3.web框架的本質及分類

(1)web框架的本質:socket服務端 與 瀏覽器的通訊

 

(2)socket服務端功能劃分

  • 負責與瀏覽器收發消息(socket通訊) --> wsgiref/uWsgi/gunicorn...
  • 根據用戶訪問不一樣的路徑執行不一樣的函數
  • 從HTML讀取出內容,而且完成字符串的替換 --> jinja2(模板語言)


(3)Python中 Web框架的分類

按上面三個功能劃分:

  • 框架自帶a,b,c --> Tornado
  • 框架自帶b和c,使用第三方的a --> Django
  • 框架自帶b,使用第三方的a和c --> Flask

按另外一個維度來劃分:

  • Django --> 大而全(你作一個網站能用到的它都有)
  • 其餘 --> Flask 輕量級

 

 

4.django安裝與基本設置使用

(1)django版本

如今主流的版本以下:

帶有LTS代表是長期支持的版本

 

(2)本人使用版本

本人選擇使用1.11

安裝:可直接使用以下命令安裝

1 pip3 install django==1.11.11

 

 

(3)建立django項目

  • 命令行建立:django-admin startproject mysite
  • pycharm建立:File --> New project --> 左側選Django --> 右側填項目路徑,而且勾選python.exe

 

(4)設置django項目(settings.py)

配置HTML文件存放的位置:

 1 // settings.py中的TEMPLATES是用來配置項目模板文件(HTML)的路徑
 2 TEMPLATES = [
 3     {
 4         'BACKEND': 'django.template.backends.django.DjangoTemplates',
 5         'DIRS': [os.path.join(BASE_DIR, 'templates')],
 6         'APP_DIRS': True,
 7         'OPTIONS': {
 8             'context_processors': [
 9                 'django.template.context_processors.debug',
10                 'django.template.context_processors.request',
11                 'django.contrib.auth.context_processors.auth',
12                 'django.contrib.messages.context_processors.messages',
13             ],
14         },
15     },
16 ]

 

配置靜態文件存放的位置:

1 // 在setting.py中最下面寫上這兩條 配置靜態文件目錄
2 // 靜態文件 -> css js 圖片
3 STATIC_URL = '/static/'
4 STATICFILES_DIRS = (
5     os.path.join(BASE_DIR, 'static'),
6 )

 

修改django默認的語言:

1 # 將默認的英文改爲中文
2 LANGUAGE_CODE = 'zh-hans'

 

將csrf規則註釋:

1 註釋settings.py的middlerware中的如下內容(csrf):
2 # 'django.middleware.csrf.CsrfViewMiddleware',

 

(5)運行django項目

1 Django項目的啓動:
2     1. 命令行啓動
3         在項目的根目錄下(也就是有manage.py的那個目錄),運行:
4         python3 manage.py runserver IP:端口--> 在指定的IP和端口啓動
5         python3 manage.py runserver 端口   --> 在指定的端口啓動
6         python3 manage.py runserver        --> 默認在本機的8000端口啓動
7 
8     2. PyCharm啓動
9         點綠色的小三角,直接能夠啓動Django項目(前提是小三角左邊是你的Django項目名)

 

(6)建立app

1 # django中的APP是什麼:
2     整個project -> 一個大學(武漢大學)
3     一個APP -> 某個學院(計算機學院/金融學院/管理學院、、、)
4 
5 APP能夠方便咱們在一個大的Django項目中,管理實現不一樣的業務功能
6 
7 建立APP的命令
8 命令行 - 在Django項目的根目錄輸入:
9 python3 manage.py startapp app的名字

如下是建立APP的實例:

執行以上命令後文件夾以下:

最後要在settings.py中設置一下:

另外也能夠在建立pycharm項目時隨手建立一個APP:

 

 

(7)數據庫配置

在Django項目中的settings.py中設置鏈接數據庫的相關配置(告訴Django鏈接哪個數據庫):

 1 # Database
 2 # https://docs.djangoproject.com/en/1.11/ref/settings/#databases
 3 
 4 # 默認使用sqlite數據庫
 5 # DATABASES = {
 6 #     'default': {
 7 #         'ENGINE': 'django.db.backends.sqlite3',
 8 #         'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
 9 #     }
10 # }
11 
12 # 數據庫相關配置:
13 DATABASES = {
14     'default': {
15         'ENGINE': 'django.db.backends.mysql',  # 鏈接的數據庫類型
16         'HOST': '127.0.0.1',    # 鏈接數據庫的地址
17         'PORT': 3306,           # 端口
18         'NAME': "django",       # 數據庫名稱
19         'USER': 'root',         # 用戶
20         'PASSWORD': 'root'      # 密碼
21     }
22 }

若是要使用pymysql鏈接MySQL數據庫,就要進行以下設置:

告訴Django用pymysql代替默認的MySQLDB 鏈接MySQL數據庫,在項目/__init__.py文件中,寫下面兩句:

1 import pymysql
2 # 告訴Django用pymysql來代替默認的MySQLdb
3 pymysql.install_as_MySQLdb()

相關文章
相關標籤/搜索