vue使用postcss適配在chrome下瀏覽器字型偏大
阿新 • • 發佈:2021-01-07
MTV模型
- Model: 和資料庫相關, 負責業務物件和資料庫物件(ORM)
- Template: 放所有的html檔案, 通過模板語法將資料庫當中的資料渲染到頁面中, 以便在前端頁面展示
- View: 負責業務邏輯, 並在適當的時候呼叫
Model
和Template
此外,Django還有一個urls分發器,它的作用是將一個個URL的頁面請求分發給不同的view處理,view再呼叫相應的Model和Template
Django基礎命令
1. 下載Django
pip install django==2.0.1 # 本文使用的django版本為2.0.1
2. 建立一個Django project
django-admin.py startproject mysite
會生成如下目錄結構
- manage.py ----- Django專案裡面的工具,通過它可以呼叫django shell和資料庫等。
- settings.py ---- 包含了專案的預設設定,包括資料庫資訊,除錯標誌以及其他一些工作的變數。
- urls.py ----- 負責把URL模式對映到應用程式。
3. 進入project目錄建立一個應用
python3 manage.py startapp blog(應用名稱)
4. 啟動Django專案
python3 manage.py runserver 8080
5. 配置靜態檔案目錄
修改專案的settings.py, 加入STATICFILES_DIRS
部分的程式碼
STATIC_URL = '/static/' # 靜態檔案路徑別名, django對引用名和實際名進行對映,引用時,只能按照引用名來, # 不能按實際名去找
STATICFILES_DIRS = [
os.path.join(BASE_DIR,'statics') # statics為實際目錄, 這個目錄的名字可以自定義
]
路由控制和分發(include)
專案全域性urls.py檔案
from django.urls import path,re_path,include # re_path通過正則匹配路徑, include可以把請求分發到不同的app下的 # url分發器 from app01 import views # 匯入應用app01的檢視檔案 urlpatterns = [ # path('admin/', admin.site.urls), # path('timer/', views.timer), # 路徑(timer/)----------->檢視函式(views.timer) re_path(r'^articles/([0-9]{4})',views.articles), # 會給articles這個檢視傳入request和([0-9]{4})兩個引數, 所 # 以articles這個檢視需要接收兩個引數 path('login/', views.login), re_path(r'^',include('app01.urls')) ] # 1 一旦匹配成功則不再繼續 # 2 若要從URL 中捕獲一個值,只需要在它周圍放置一對圓括號。 # 3 不需要新增一個前導的反斜槓,因為每個URL 都有。例如,應該是^articles 而不是 ^/articles。 # 4 每個正則表示式前面的'r' 是可選的但是建議加上。
app01下的urls, 由上一段程式碼的include
分發到這裡
from django.contrib import admin
from django.urls import path,re_path,include
from app01 import views
urlpatterns = [
re_path(r'^articles/([0-9]{4})',views.articles)
]
有名分組
在更高階的用法中,可以使用命名的正則表示式組來捕獲URL 中的值並以關鍵字 引數傳遞給檢視。
在Python 正則表示式中,命名正則表示式組的語法是(?P<name>pattern)
,其中name
是組的名稱,pattern
是要匹配的模式
from django.contrib import admin
from django.urls import path,re_path,include
from app01 import views
urlpatterns = [
re_path(r'^articles/2003/$', views.special_case_2003),
re_path(r'^articles/(?P<year>[0-9]{4})/$', views.year_archive),
re_path(r'^articles/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/$', views.month_archive),
re_path(r'^articles/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/(?P<day>[0-9]{2})/$', views.article_detail),
]
這個實現與前面的示例完全相同,只有一個細微的差別:捕獲的值作為關鍵字引數而不是位置引數傳遞給檢視函式。例如:
/articles/2005/03/
請求將呼叫views.month_archive(request, year='2005', month='03')函式
/articles/2003/03/03/
請求將呼叫函式views.article_detail(request, year='2003', month='03', day='03')。
在實際應用中,這意味你的URLconf 會更加明晰且不容易產生引數順序問題的錯誤 —— 你可以在你的檢視函式定義中重新安排引數的順序