Django


第1章 Web應用

1.1什麼是web應用程序?

Web 應用程序就是一種可以通過web訪問的應用程序,程序的最大好處就是用戶很容易訪問程序,因爲用戶只需要有瀏覽器即可,不需要安裝其他軟件

應用程序有兩種模式C/S,客戶端和服務端,B/S,是瀏覽器和服務端,這類應用程序一般藉助瀏覽器來運行,web應用程序一般是B/S模式

第2章 Web框架:

2.1什麼是web框架?

Web框架是一種開發框架,用來支持動態網站,網絡應用和網絡服務的開發,着大多數的web框架提供了一套開發和部署網站的方式,也是爲了web行爲提供了一套通用的方法,web框架已經實現了很多功能,開發人員使用框架提供的方法並且完成自己的業務邏輯,就能快速開發web應用了

2.2Python中的web框架:

       Django    大而全

       Flask     輕量級

       Tornado   高性能

第3章 Django簡介與安裝使用

3.1MVCMTV模型

MVC

Web應用開發裏著名的MVC模式,就是吧web應用分爲:模型(M),控制器(C),視圖(V)三層,他們之間以一種插件式的,鬆耦合的方式聯繫在一起,模型負責業務對象與數據庫的映射(ORM),試圖負責與用戶的交互,控制器接受用戶的調用模型和試圖完成用戶的請求

MTV

DjangoMTV本質上和MVC是一樣的,只是定義上有些許不同

1.     M代表(model):負責業務和數據庫的關係映射(ORM

2.     T代表(template):負責如何把頁面展示給用戶(html

3.     V代表視圖(view):負責業務邏輯,並在適當的時候調用modeltemplate

4.     除了以上三層之外,還需要一個url分發器,他的作用是將一個個的url的頁面請求分發給不同的view處理,view在調用相應的modeltemplateMTV響應模式如下

3.2什麼是Django

Django是一個web框架,web框架的本質就是一個socket服務端

3.3Django的安裝與使用

Ø  安裝django

pip3 install django==1.11.9 -i http://pypi.hustunique.org/simple

Ø  創建一個django項目

django-admin startproject mydjango

Ø  文件說明:

manage.py----django項目的工具,通過他可以調用django shell和數據庫等

settings.py----包含了項目的默認設置,包括數據庫信息,調試標誌以及其他一些工作的變量

urls.py----負責把url模式映射到應用程序

Ø  Django目錄下創建應用:

python3 manage.py startapp app01

Ø  啓動django項目

python3 manage.py runserver 8000

3.4Django簡單示例:

url控制器

from django.conf.urlsimport url
from django.contribimport admin
from app01import views

urlpatterns = [
    url(
r'^admin/'admin.site.urls),
    
url(r'^index/'views.index),
]

視圖:

# Create your views here.
def index(request):
    
returnrender(request,'index.html')

模版

<!DOCTYPE html>
<html 
lang="en">
<head>
    <meta 
charset="UTF-8">
    <title>
Title</title>
</head>
<body>
<div>
hello</div>
</body>
</html>

3.5新手三件套:

from django.shortcuts import render,HttpResponse,redirect

# Create your views here.
def index(request):
    
#向瀏覽器返回字符串
    #return HttpResponse('hello web')
    #
向瀏覽器返回頁面
    #return render(request,'index.html')
    #
返回重定向
    
return redirect('http://www.baidu.com')

3.6Djangopath問題

Ø  1.X

使用url,而且是支持正則

Ø  2.X

re_path就是1.X中的url

2.X中的path是新增的,但是url的方式也支持

path('準確路徑',views.test,name='test')

第4章 路由

4.1django中路由的作用:

url配置就像django所支撐的目錄,它的本質是url與要爲該url調用的試圖函數之間的映射表,你就是以這種方式告訴django,對於客戶端發來的某個url調用那一段邏輯代碼對應執行

4.2無名分組

括號內的內容會被分組分出來,當作參數,以位置參數的形式傳到視圖函數,視圖函數應該接受這些參數

urls

urlpatterns= [
    url(
r'^admin/'admin.site.urls),
    
url(r'^index/(\d+)/(\d+)'views.index),
]

views

def index(request,res):
    
print(res)
    
return HttpResponse('hello')

4.3有名分組

括號內的內容會被分組分出來,當作參數,以關鍵字參數的形式傳到視圖函數,視圖函數應該接受這些參數

urls

urlpatterns= [
    url(
r'^admin/'admin.site.urls),
    
url(r'^index/(?<m1>\d+)/(?<m2>\d+)',views.index),
]

views

def index(request,m1,m2):
    
print(m1,m2)
    
return HttpResponse('hello')

4.4反向解析:

Ø  在不使用反向解析,想達到訪問index的時候跳轉到test頁面上需要這樣做

urls

from app01import views

urlpatterns = [
     url(
r'^test/'views.test),
     
url(r'^index/'views.index),
]

views

def index(request):
    
return redirect('/test/')
def test(requset):
    
return HttpResponse('我是test首頁')

Ø  上面的方法可以看出來,如果urls中的目錄地址更換,那麼後面views中跳轉的地址全部需要更改,爲了簡化這個操作,就要用到反向解析了

urls

urlpatterns= [
     url(
r'^test/$'views.test,name='test'),
     
url(r'^index/$'views.index),
]

views

def index(request):
    url=reverse(
'test')
    
return redirect(url)
def test(requset):
    
return HttpResponse('我是test首頁')

Ø  反向解析在模版中的使用:

urls

urlpatterns= [
     url(
r'^test/$'views.test,name='test'),
     
url(r'^index/$'views.index),
]

views

def index(request):
    
return render(request,'index.html')
def test(requset):
    
return HttpResponse('我是test首頁')

html

<body>
    <div>
Djangoindex頁面</div>
    <a 
href="{% url 'test' %}">點擊進入test頁面</a>
</body>

4.5路由分發:對多個app進行管理

1.     創建第二個app

python3 manage.py startapp app02

2.     settings中進行註冊:

INSTALLED_APPS= [
    
'django.contrib.admin',
    
'django.contrib.auth',
    
'django.contrib.contenttypes',
    
'django.contrib.sessions',
    
'django.contrib.messages',
    
'django.contrib.staticfiles',
    
'app01',
    
'app02',
]

3.     在總路由中

#導入include模塊

from django.conf.urlsimport url,include
from django.contribimport admin
#app總入口
urlpatterns = [
    url(
r'^app01/'include('app01.urls')),
    
url(r'^app02/'include('app02.urls'))
]

4.     在不同app

app01

from django.conf.urlsimport url
from django.contrib import admin
from app01 import views

urlpatterns = [
    url(
r'^app01test/'views.test),
]

app02

from django.conf.urlsimport url
from django.contrib import admin
from app02 import views

urlpatterns = [
    url(
r'^app02test/'views.test),
]

app01

from django.shortcutsimport render,HttpResponse,redirect,reverse

# Create your views here.

def test(requset):
    
returnHttpResponse('我是app01test頁面')

app02

from django.shortcutsimport render,HttpResponse,redirect

# Create your views here.
def test(request):
    
returnHttpResponse('我是app02test頁面')

第5章 視圖層

5.1請求對象requset

#requset是一個對象,請求對象
#
請求的方法
print(requset.method)
#請求地址
print(requset.path)
#請求全路徑
print(requset.get_full_path())
#get方式傳遞的參數
print(requset.GET)
return HttpResponse('我是index頁面')

5.2向前端返回一個json格式字符串的兩種方式:

1.     利用json模塊

import json
# Create your views here.

def index(requset):
    data={
'name':'jiang','age':10}
    
returnHttpResponse(json.dumps(data))

2.     利用jsonRequest

from django.httpimport JsonResponse

# Create your views here.

def index(requset):
    data={
'name':'jiang','age':10}
    
returnJsonResponse(data,safe=False)

5.3文件上傳案例:

html

<body>
<form 
action="" method="post" enctype="multipart/form-data">
    <p>
        <input 
type="file" name="myfile">
    </p>
    <input 
type="submit" value="提交">
</form>
</body>

urls

from app01import views
urlpatterns = [
    url(
r'^index/'views.file_upload),
]

views

rom django.shortcutsimport render,HttpResponse,redirect,reverse

# Create your views here.

def file_upload(requset):
    
ifrequset.method == "GET":
        
returnrender(requset,'index.html')
    files=requset.FILES
    myfile=files.get(
'myfile')
    
withopen(myfile.name,'wb'as f:
        
forline inmyfile:
            f.write(line)
    
returnHttpResponse('文件上傳成功')

第6章 模版層

6.1模版語言語法:

變量:{{變量名}}

1.     深度查詢,用點號

2.     過濾器

標籤:{{% %}}

6.2簡單使用:

html

<body>
{{ time }}
</body>

views

import time
# Create your views here.

def index(requset):
    ctime=
str(time.time())
    
returnrender(requset,'index.html',{'time':ctime})

6.3locals用法:

<body>
<p>
{{ ctime }}</p>
<p>
{{ dic }}</p>
<p>
{{ dic.name }}</p>
</body>

views

def index(requset):
    ctime=
str(time.time())
    dic={
'name':'jiang','age':10}
    
# return render(requset,'index.html',{'time':ctime,'dic':dic})
    #
會把該函數中所有的變量,構造成字典,傳到模版中
    
returnrender(requset,'index.html',locals())

 

 


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