Django框架簡介

 Django框架簡介

MVC框架和MTV框架

MVC,全名是Model View Controller,是軟件工程中的一種軟件架構模式,把軟件系統分爲三個基本部分:模型(Model)、視圖(View)和控制器(Controller),具備耦合性低、重用性高、生命週期成本低等優勢。html

想要更詳細的瞭解MVC模式? >> 點我python

Django框架的設計模式借鑑了MVC框架的思想,也是分紅三部分,來下降各個部分之間的耦合性。web

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

Django的MTV模式

       Model(模型):負責業務對象與數據庫的對象(ORM)數據庫

       Template(模版):負責如何把頁面展現給用戶django

       View(視圖):負責業務邏輯,並在適當的時候調用Model和Template設計模式

此外,Django還有一個urls分發器,它的做用是將一個個URL的頁面請求分發給不一樣的view處理,view再調用相應的Model和Template瀏覽器

Django框架圖示

 

 

Django安裝和基本使用

安裝Django,指定國內pip源

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

Django官網下載頁面session

 

建立Django項目

下面的命令建立了一個名爲"webapp"的Django 項目:架構

django-admin startproject webapp

 

項目建立完成,會在當前目錄下生成一個目錄

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

 

運行Django項目:

默認是8000端口

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

 

pycharm建立Django項目

pycharm會自動建立模板目錄

 

啓動項目

 

 

Django settings

# 項目根目錄
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

# ip地址訪問權限
ALLOWED_HOSTS = ['*']   

# app註冊列表
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會自動建立和添加。 命令行建立項目須要本身添加
}]


# 數據庫配置
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',        #  數據庫類型
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),    # 要鏈接的庫
    }
}


# 靜態文件別名,以/static/開頭
STATIC_URL = '/static/' 
STATICFILES_DIRS = [
    os.path.join(BASE_DIR,'static')   # 實際的靜態文件目錄路徑
]
django配置文件

 

Django建立 app

一個Django項目能夠分爲不少個APP,用來隔離不一樣功能模塊的代碼。

python manage.py startapp app01

 

執行命令後,項目目錄下多出一個app01的文件夾,目錄結構以下:

[root@yunwei-test webapp]# tree app01/
app01/
├── admin.py        #  admin管理後臺
├── apps.py         #  app
├── __init__.py  
├── migrations        # 數據庫遷移的文件
│   └── __init__.py    
├── models.py        # ORM
├── tests.py      
└── views.py        #  函數功能

 

 在settings配置文件中註冊app

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

 

 

 

Django函數

from django.shortcuts import HttpResponse, render, redirect

 

參數

必須接受一個參數 request

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

request.path_info                # url路徑
 

返回值

必須是一個HttpResponse對象

 

HttpResponse

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

例如:

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

 

render

除request參數外還接受一個待渲染的模板文件和一個保存具體數據的字典參數。

將數據填充進模板文件,最後把結果返回給瀏覽器。(相似於咱們上面用到的jinja2)

例如:

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

 

redirect重定向

接受一個URL參數,表示跳轉到指定的URL。

例如:

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

 

重定向

return redirect('/home/')
 返回瀏覽器狀態碼:302   和響應頭:Location: /home/
瀏覽器會再次向返回的URL地址發起一次GET請求,獲取跳轉後的頁面。
 

 

相關文章
相關標籤/搜索