Django簡介以及安裝

前言

Web框架本質

所謂的web框架就是一個C/S架構。前端

咱們能夠用socket來編寫咱們的服務端,那麼客戶端是咱們的瀏覽器,當咱們訪問服務器資源的時候,服務器接收到請求,可是沒法響應給客戶端。python

這是由於要發送的數據沒有遵循http協議,在服務端添加http協議頭以後能夠進行訪問web

那麼咱們若是在網址後面加參數,好比127.0.0.1:8080/index 相似這種的,服務器也沒法響應了,這時候咱們能夠利用wsgiref這個模塊來接收客戶端的參數獲取用戶的url參數信息,根據這個參數信息,咱們能夠定義一個urls.py路由文件,幫咱們任務的分發,分發到views.py視圖函數中,shell

視圖函數中利用三板斧能夠發送給前端信息,最終展現給客戶端。django

咱們能夠這樣理解:全部的Web應用本質上就是一個socket服務端,而用戶的瀏覽器就是一個socket客戶端。 這樣咱們就能夠本身實現Web框架了。flask

服務器和應用程序

對於真實開發中的python web程序來講,通常會分爲兩部分:服務器程序和應用程序。後端

服務器程序負責對socket服務器進行封裝,並在請求到來時,對請求的各類數據進行整理。瀏覽器

應用程序則負責具體的邏輯處理。爲了方便應用程序的開發,就出現了衆多的Web框架,例如:Django、Flask、web.py 等。不一樣的框架有不一樣的開發方式,可是不管如何,開發出的應用程序都要和服務器程序配合,才能爲用戶提供服務。服務器

這樣,服務器程序就須要爲不一樣的框架提供不一樣的支持。這樣混亂的局面不管對於服務器仍是框架,都是很差的。對服務器來講,須要支持各類不一樣框架,對框架來講,只有支持它的服務器才能被開發出的應用使用。

這時候,標準化就變得尤其重要。咱們能夠設立一個標準,只要服務器程序支持這個標準,框架也支持這個標準,那麼他們就能夠配合使用。一旦標準肯定,雙方各自實現。這樣,服務器能夠支持更多支持標準的框架,框架也可使用更多支持標準的服務器。

WSGI(Web Server Gateway Interface)就是一種規範,它定義了使用Python編寫的web應用程序與web服務器程序之間的接口格式,實現web應用程序與web服務器程序間的解耦。

經常使用的WSGI服務器有uwsgi、Gunicorn。而Python標準庫提供的獨立WSGI服務器叫wsgiref,Django開發環境用的就是這個模塊來作服務器。

基於第三方模塊實現Web框架

須要用到:

  • views.py:視圖層,放置功能函數(視圖函數)
  • urls.py:路由層,放的是路徑後綴與視圖函數的對應關係
  • templates:模板層,放的全是html文件

Python三大主流Web框架

django

大型的框架,自帶的組件和功能很是多

相似於航空母艦

強大的功能以外不足之處:比較笨重

  • socket服務器部分用的是別人的wsgiref
  • 路由層本身實現
  • 模板語法本身實現

flask

短小精悍,自帶組件很是少

基本所有依賴於第三方組件

若是將flask全部第三方模塊加起來,能夠蓋過django

  • socket服務器部分用的第三方模塊werkzeug
  • 路由層本身實現
  • 模板語法利用第三方模塊Jinja2

tornado

異步非阻塞的一個框架,能夠用來開發遊戲服務器,效率很是很是高。

  • socket服務器本身實現
  • 路由層本身實現
  • 模板語法本身實現

Django框架介紹

安裝

安裝Django以前注意:

  1. 計算機名稱不能有中文
  2. python解釋器不要使用3.7版本 推薦使用版本3.4~3.6
  3. 一個pycharm窗口 只能跑一個項目
  4. 版本儘可能安裝穩定版,本教程將以1.11.11版本爲主。

安裝直接用pip安裝便可

pip3 install django==1.11.11

如何檢驗django是否安裝成功
命令行敲 django-admin

建立項目

命令行建立項目:

django-admin startproject 項目名(例如mysite)

pycharm建立項目:

建立App

python3 manage.py startapp app01

django是一個以開發app爲主要功能的web框架

app就是application應用的意思

一個django項目就是一所大學(空的架子 自己沒有任何功能),而app就相似於大學裏面的各個學院。

一個app就對應一個具體的功能模塊。

建立好的app須要在django配置文件中註冊方可生效

注意
1.使用命令行建立項目不會自動幫你建立templates文件夾
2.配置文件中不會自動幫你書寫templates文件路徑

3.setting配置文件中也不會自動幫你加app,不會生效

setting配置文件:

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'app01.apps.App01Config',       # 若是新建的app沒有,這裏要加上
]

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR,"templates")],   # 若是這裏的路徑是空的,要手動加
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

目錄介紹

mysite/
├── manage.py  # 管理文件
└── mysite  # 項目目錄
    ├── __init__.py
    ├── settings.py  # 配置
    ├── urls.py  # 路由 --> URL和函數的對應關係
    └── wsgi.py  # runserver命令就使用wsgiref模塊作簡單的web server

運行項目

python manage.py runserver 127.0.0.1:8000

Django基礎必備三件套

from django.shortcuts import HttpResponse,render,redirect

HttpResponse

內部傳入一個字符串的參數,將會返回給瀏覽器

例如:

def index(request):
    # 業務邏輯代碼
    return HttpResponse("正常訪問了")

render

能夠接收多個參數

第一個參數接收request

第二個參數填寫一個待渲染的模板文件(html文件)

第三個參數寫一個保存具體數據的字典

意思是將數據填充進模板文件,最後將結果返回給瀏覽器,相似於Jinja2模板,注意,這裏的reder使用的模板語法,在html文件中可使用python的字典語法取值,是python後端處理完成以後再發送到html的,最後纔將結果返回給瀏覽器。

例如:

def index(request):
    # 業務邏輯代碼
    return render(request,"index,html",{"name":"qinyj","hobby":["run","jump"]})

redirect

接收一個URL參數,意思是能夠重定向到指定的URL地址

例如:

def index(request):
    # 業務邏輯代碼
    return redirect("https://www.baidu.com")
相關文章
相關標籤/搜索