django 模型,項目與應用的創建 ,url,views,template ,controller
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