day67

昨日回顾
 1 orm 创建表,新增字段,修改,删除字段,不能创建数据库
  -字段属性phone=models.CharField(max_length=64,null=True)
  -null=True 代表该列可以为空
 2 数据的增删改查
  -增(1):User.objects.create(address='')
  -增(2):实例化产生一个user对象,user对象的save方法
  -删:User.objects.filter(id=1,name='lqz').first().delete()
  -删:User.objects.filter(id=1,name='lqz').delete()
  -改:User.objects.filter(id=1,name='lqz').update()
  -查:User.objects.all()
      user=User.objects.filter(name='lqz')
   user.name
 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 django生命周期  
 5 一对多,多对多
  -publish_id
  -publish=models.ForeignKey(to='Publish', to_field='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

猜你喜欢

转载自www.cnblogs.com/yaoxiaofeng/p/9923745.html