1. 程式人生 > >Django第四天

Django第四天

1.orm建立表,新增欄位刪除,修改欄位,不能建立資料庫

   欄位屬性phone=models.Char File(max_length=64,null=True)

2.資料的增刪改查

  增(1):User.object.create(address=' ')

      (2):例項化產生一個user物件,user物件的save方法

  刪User.objests.filter(id=1,name='lqz').first().delete()

  刪User.objests.filter(id=1 ,name='lqz').delete()

  改User.objects.filter(id=1 name='lqz').update()

      user=User.object.filter(name='lqz')

     user.save()

3 前後臺互動
  -id=1&name='lqz'&
  <form action="/updateuser/?id={{ user.id }}" method="post">
   <p><input type="hidden" name="id" value="{{ user.id }}"></p>
   <p>使用者名稱: <input type="text" name="name" value="{{ user.name }}"></p>
   <p>密碼: <input type="text" name="password" value="{{ user.password }}"></p>
   <p>地址: <input type="text" name="addr" value="{{ user.address }}"></p>
   <input type="submit" value="提交">
  </form>

4 一對多,多對多

  publish_id

  publish=models.ForeignKey(to='Publish',to_fileld-'id')

  book.publish_id

  book.publish

  多對多:(自動建立第三張表)

  authors = models.ManyToManyField(to='Author')

 

路由層:

 1 簡單配置
  -第一個引數是正則表示式(如果要精準匹配:'^publish/$')
  -第二個引數是檢視函式(不要加括號)
  -url(r'^admin/', admin.site.urls),
 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),
  -def publish(request, mounth,year):
  *****有名分組和無名分組,不要混用
 4 反向解析
  -先命一個名:
   -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'),
  -在模板層:
   -1 無引數:{% url 'ddd' %}
   -2 無名分組的:{% url 'ddd' 2018 12 %}
   -3 有名分組:{% url 'ddd' 2018 12 %}  還可以 {% url 'ddd' year=2018 mounth=12 %}
   
  -在檢視層:
   from django.shortcuts import reverse
   在檢視函式裡:
   1 無引數:url=reverse('ddd')
   1 無名分組:url=reverse('ddd',args=(2018,12,))
   1 有名分組:url=reverse('ddd',args=(2018,12,)) 還可以 url=reverse('ddd',kwargs={'year':2018,'mounth':12})
 5 路由分發 
  1 在不同的app裡建立urls.py
  2 在總路由
   -from django.conf.urls import include
   -url(r'^blog/',include('blog.urls')),
   -url(r'^app01/',include('app01.urls')),
  3 在不同的app的urls裡配置路由關係 
  ***重點***總路由,不能加結束符$
 6 名稱空間
  -url(r'^blog/',include('blog.urls',namespace='blog')),
  -子路由:url(r'^publish/$', views.publish,name='test'),
  -反向解析:
   -檢視層:url = reverse('blog:test')
   -模板層:{% url 'app01:test'%}
  ***一般不要用***
   子路由: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