不一樣於其餘語言的MVC模式,Django採用的是MVT模式,即Model、View、Template,這裏的View其實質就是其餘語言中的Controller(emmm.....),而Template其實就是html文件,因此原理其實大同小異,這裏就很少贅述html
Django中的默認路由在項目主目錄下的urls.py中,基本路由配置以下所示:python
from django.urls import path, include from . import views urlpatterns = [ path('articles/2003/', views.special_case_2003), path('articles/<int:year>/', views.year_archive), path('articles/<int:year>/<int:month>/', views.month_archive), path('articles/<int:year>/<int:month>/<slug:slug>/', views.article_detail), path('', include('test.urls')) # 引入不一樣應用的url配置 ]
以上爲普通匹配方式,其中有幾種可以限制路由中參數類型的函數能夠使用。laravel
使用正則表達式匹配ajax
from django.urls import path, re_path from . import views urlpatterns = [ path('articles/2003/', views.special_case_2003), re_path(r'^articles/(?P<year>[0-9]{4})/$', views.year_archive), # ?P<year>意爲指定參數的名字 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<slug>[\w-]+)/$', views.article_detail), ]
URL起別名
此例相對於PHP laravel框架中的route()用法,具體用法以下正則表達式
# 路由中的配置 from django.urls import path, include from test import views urlpatterns = [ path('', views.index, name='test-index'), path('/<int:num>', views.getNum) path('', include('test.urls', namespace = 'test')) #爲include起別名 ] # 在template中的運用 <a href="{% url 'test-index' 此處能夠跟參數 %}"></a> # 在views中的運用 from django.http import HttpResponseRedirect from django.urls import reverse def redirect_to_year(request): year = 2006 # 參數 return HttpResponseRedirect(reverse('test-index', args=(year,)))
屬性django
QueryDict對象
QueryDict對象定義在django.http.QueryDict,與python字典不一樣,QueryDict類型的對象用來處理同一個鍵帶有多個值的狀況,能夠經過方法get()
來獲取值json
dict.get('鍵名',默認值) dict['鍵名']
另外還能夠經過方法getlist()
將鍵的值以列表的形式返回瀏覽器
dict.getlist('鍵名',默認值)
屬性緩存
方法cookie
重定向HttpResponseRedirect
from django.http import HttpResponse,HttpResponseRedirect def index(request): return HttpResponseRedirect('index/') # 反向解析 from django.core.urlresolvers import reverse def index(request): return HttpResponseRedirect(reverse('booktest:index2', args=(1,)))
返回json對象JsonResponse
from django.http import JsonResponse def index2(requeset): return JsonResponse({'name': 'abc'})
渲染模版render
from django.shortcuts import render def index(request): return render(request, 'booktest/index.html', {'h1': 'hello'})
重定向redirect
from django.shortcuts import redirect from django.core.urlresolvers import reverse def index(request): return redirect(reverse('booktest:index2'))
使用session
會話過時時間