1. 程式人生 > >django 模型,項目與應用的創建 ,url,views,template ,controller

django 模型,項目與應用的創建 ,url,views,template ,controller

自己 就是 代碼 別名 安裝 創建 djang import 命令

1,web框架

框架--framework,是為解決一個問題兒設計一個有約束性的支持結構,可以快速的開發系統,

對於所有的web框架,本質就是一個sock的服務端,而瀏覽器就是一個sock客戶端。

WSGI,既web server gateway interface ,web服務網關接口,客戶端所有的請求都要先經過wsgi,底層所有的tcp/ip,http等協議,都已經封裝好,wsgi提供了統一的接口,

在wsgi 中做了對http的解析和組裝,request裏包含了請求的數據,

django是用python語言編寫的,依賴於python的環境

安裝django ,pip install django ,執行命令後,在Python/Script目錄下,就存在一個django.admin.exe 文件,

===============

2.mtv 和mvc 模式

model,是與數據庫交互

template ,進行模塊的渲染,顯示前端的內容

views ,視圖,邏輯代碼,實現url與執行函數的調用,

controller ,控制路由分發,

----

MVC模式就是把web應用分為model(模型),負責與數據庫的交互,views(視圖)負責與頁面的交互,controller(控制)負責用戶的輸入調用模型和視圖完成的用戶的請求,

---

MTV 模型:

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

template (模板); 負責前端頁面的數據顯示

view (視圖): 業務邏輯,調用template與model

請求 流程:

客戶端發起請求,經過wsgi,url匹配到路徑,調用對應的view函數, view執行邏輯代碼,到數據庫model 增刪改查數據,model從數據庫拿到數據後,返回給view,view再給template進行渲染顯示,用戶得到數據,請求結束。

==================

django的命令工具

創建一個django項目

,找到要在那個文件下創建,右鍵打開cmd, 執行 django-admin startprojiect mysite(項目名稱)

mysite文件裏包含了manage.py 是與django進行交互的命令腳本文件,

再項目裏創建一個應用 python manage.py startapp app01 .,如果允許次應用 python manage.py runserver 8800(端口)

========

關於視圖函數的返回值

from django.shortcuts import render ,redirect ,HttpResponse

return HTTPResponse(‘登錄成功’) ,HttpResponse是一個類,實例化一個是一個字符串,

return render(request ,‘index.html‘,) render 渲染的字符串(源代碼顯示HttpResponse),request參數必須要有,不走路徑,、

return redirect(‘/index/’)是跳轉,要走一次視圖函數index ,走一次路徑,

=====

url.py 中,controller控制著路由分發,

列表是元組形式,可以有多個,前面是正則匹配,後面是映射路由函數,

^ 是以什麽開頭,$ 是以什麽結尾,不寫 ^ 就是包含的意思,

urlpatterns = [

    url(r‘^index/$‘,view.index ),

    url(r ‘ (\d{4})/$‘ ,year_query) ,(無名分組匹配,(\d{4})會作為一個參數傳給year_query,所以在views.py文件中 寫year_query函數時,要傳一個參數(request,\d{4})

    url (r ‘(?P<year>\d{4}/?P<month>\d{2})‘,year_query),(有名分組,傳參時不用考試位置,

  ]

urlpatterns =[ url (正則表達式,view視圖函數,參數,別名),]

url 的別名應用

urlpatterns = [url (r‘^reg/‘,regs,name=register,],,當url的路徑更改時,視圖函數的名字不需要更改,register別名對應新url的名字,也就是,路徑原來是reg ,現在改成了register, 視圖函數的別名還是可以映射,繼續執行,

======

include 路由分發

當一個項目中,有多個應用,多個APP,每個APP都有自己url,就可以寫到自己的url.py 文件中,用到include,

在全局的url.py 文件中,

from django.conf.urls import url.include

urlpatterns = [

  url (r ‘^blog/‘,include(‘blog.urls‘)),

] blog 是一個應用,匹配到blog,分發找到blog下面的url

=====

view 視圖函數,包含了2個對象,request,和 response,

template 模板包含了 {{ 變量 }} ,{% 標簽 %},

{% for %}

{% end %}

{%if %}

{% elif %}

{% endif %}

模板語言的深度查詢 句點號 . 點 在python語言中,用【】取每一個值, template 用 點 .

django 模型,項目與應用的創建 ,url,views,template ,controller