Django框架之url路由層
一 Django數據庫的一對多與多對多表的創建
一對多
publish_id的創建:publish=models.ForeignKey(to='Publish', to_field='id')
book.publish_id
book.publish
多對多:(自動建立第三張表)
authors = models.ManyToManyField(to='Author')
二 路由層的配置
1 簡單配置: url(r'^admin/', admin.site.urls),
第一個參數是正則表達式(若是要精準匹配:'^publish/$')
第二個參數是視圖函數(不要加括號)
2 無名分組
按位置傳參,分組以後,會把分組出來的數據,當位置參數,傳到視圖函數,因此,視圖函數須要定義形參
url(r'^publish/([0-9]{4})/([0-9]{2})$', views.publish),
def publish(request,*args): 視圖函數能夠這樣接收
3 有名分組
按關鍵字傳參,有名分組以後,會把分組出來的數據,當關鍵字參數,傳到視圖函數,視圖函數須要定義形參,形參名字要跟分組的名字對應,與順序無關
url(r'^publish/(?P<year>[0-9]{4})/(?P<mounth>[0-9]{2})/$', views.publish), ##(?P<year>[0-9])分組後賦值給year
def publish(request, mounth,year):
*****有名分組和無名分組,不要不能混用****
4 反向解析
1 先給路由命一個名:
1 無參數:url(r'^publishadd133/$', views.publishadd,name='ddd'),
2 無名分組:url(r'^publishadd/([0-9]{4})/([0-9]{2})/$', views.publishadd,name='ddd'),
3 有名分組:url(r'^publishadd/(?P<year>[0-9]{4})/(?P<mounth>[0-9]{2})/$', views.publishadd,name='ddd'),
2 在模板層:
1 無參數:{% url 'ddd' %}
2 無名分組的:{% url 'ddd' 2018 12 %}
3 有名分組:{% url 'ddd' 2018 12 %} 還能夠 {% url 'ddd' year=2018 mounth=12 %}
3 在視圖層:在視圖函數裏:
from django.shortcuts import reverse ##必須先導入模塊 reverse
1 無參數:url=reverse('ddd')
2 無名分組:url=reverse('ddd',args=(2018,12,))
3 有名分組:url=reverse('ddd',args=(2018,12,)) 還能夠 url=reverse('ddd',kwargs={'year':2018,'mounth':12})
5 路由分發
1 在不一樣的app裏建立urls.pyo8
2 在總路由
from django.conf.urls import include ##必須先導入模塊 include
url(r'^blog/',include('blog.urls')),
url(r'^app01/',include('app01.urls')),
3 在不一樣的app的urls裏配置路由關係
***重點***總路由,不能加結束符$
6 名稱空間 ***通常不要用***
1 url(r'^blog/',include('blog.urls',namespace='blog')),
2 子路由:url(r'^publish/$', views.publish,name='test'),
3 反向解析:
1 視圖層:url = reverse('blog:test')
2 模板層:{% url 'app01:test'%}
****經常使用下面的命名方式代替上面操做*** ##重命名直接加上在那個app上
子路由:url(r'^publish/$', views.publish,name='app01_test'),
7 僞靜態
路由:url(r'^book/(?P<id>\d+.html)',views.book),
訪問:http://127.0.0.1:8000/book/4.html
三 做業:
1 本身嘗試對象有沒有刪除方法,更新方法
2 有時間的同窗研究一下如何手動建立第三張表
3 圖書管理系統,路由不用get形式傳參,用有名分組,無名分組
4 http://127.0.0.1:8000/ 訪問這個路徑,匹配到圖書列表
5 路由匹配不上,調到404的頁面
6 圖書管理系統,繼續寫html