day73 Django框架之URL

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

相關文章
相關標籤/搜索