(提问复习为主)
一、Django请求的生命周期
     武彦涛:
          路由系统 -> 视图函数(获取模板+数据=》渲染) -> 字符串返回给用户
 
 
二、路由系统
     王腾:
          /index/                        ->  函数或类.as_view()
          /detail/(\d+)                 ->  函数(参数) 或 类.as_view()(参数)
          /detail/(?P<nid>\d+)   ->  函数(参数) 或 类.as_view()(参数)
          /detail/                        ->  include("app01.urls")
          /detail/    name='a1'   ->  include("app01.urls")
                                      - 视图中:reverse
                                      - 模板中:{% url "a1" %}
 
 
三、视图
     陈一波:
     FBV:函数
          def index(request,*args,**kwargs):
               ..
 
     CBV:类
          class Home(views.View):
 
               def get(self,reqeust,*args,**kwargs):
                    ..
 
     获取用户请求中的数据:
          request.POST.get
          request.GET.get
          reqeust.FILES.get()
          # checkbox,
          ........getlist()
          request.path_info
          文件对象 = reqeust.FILES.get()
          文件对象.name
          文件对象.size
          文件对象.chunks()
 
          # <form 特殊的设置></form>
 
     给用户返回数据:
          render(request, "模板的文件的路径", {'k1': [1,2,3,4],"k2": {'name': '张扬','age': 73}})
          redirect("URL")
          HttpResponse(字符串)
 
 
四、模板语言
     冯国富:
     申阳
     程表
     高晓峰
          render(request, "模板的文件的路径", {'obj': 1234, 'k1': [1,2,3,4],"k2": {'name': '张扬','age': 73}})
 
     <html>
     <body>
          <h1> {{ obj }} </h1>
          <h1> {{ k1.3 }} </h1>
          <h1> {{ k2.name }} </h1>
          {% for i in k1 %}
               <p> {{ i }} </p>
          {% endfor %}
 
          {% for row in k2.keys %}
               {{ row }}
          {% endfor %}
 
          {% for row in k2.values %}
               {{ row }}
          {% endfor %}
 
          {% for k,v in k2.items %}
               {{ k }} - {{v}}
          {% endfor %}
     </body>
     </html>
 
五、ORM
     吴世鹏
     闫利鹏
     a. 创建类和字段
          class User(models.Model):
               age = models.IntergerFiled()
               name = models.CharField(max_length=10)#字符长度
          
          #生成数据表
          Python manage.py makemigrations
          python manage.py migrate
 
          —切记:一定要在 settings.py 中注册APP
 
     b. 数据库操作
          王赛鹏
          增
               models.User.objects.create(name='qianxiaohu',age=18)
               dic = {'name': 'xx', 'age': 19}
               models.User.objects.create(**dic)
 
 
               obj = models.User(name='qiangxiaohu',age=18)
               obj.save()
          删
               models.User.objects.filter(id=1).delete()
          改
               models.User.objects.filter(id__gt=1).update(name='alex',age=84)
               dic = {'name': 'xx', 'age': 19}
               models.User.objects.filter(id__gt=1).update(**dic)
          查
               models.User.objects.filter(id=1,name='root')
               models.User.objects.filter(id__gt=1,name='root')
               models.User.objects.filter(id__lt=1)
               models.User.objects.filter(id__gte=1)
               models.User.objects.filter(id__lte=1)
 
               models.User.objects.filter(id=1,name='root')
               dic = {'name': 'xx', 'age__gt': 19}
               models.User.objects.filter(**dic)
 
               v1 = models.Business.objects.all()
               # QuerySet ,内部元素都是对象
               # QuerySet ,内部元素都是字典
               v2 = models.Business.objects.all().values('id','caption')
               # QuerySet ,内部元素都是元组
               v3 = models.Business.objects.all().values_list('id','caption')
 
               # 获取到的一个对象,如果不存在就报错
               models.Business.objects.get(id=1)
               对象或者None = models.Business.objects.filter(id=1).first()
 
 
               外键:
                    v = models.Host.objects.filter(nid__gt=0)
                    v[0].b.caption  ---->  通过.符号进行跨表
 
 
          外键:
               class UserType(models.Model):
                    caption = models.CharField(max_length=32)
                id  caption
               # 1,普通用户
               # 2,VIP用户
               # 3, 游客
 
               class User(models.Model):
                    age = models.IntergerFiled()
                    name = models.CharField(max_length=10)#字符长度
                    # user_type_id = models.IntergerFiled() # 约束,
                    user_type = models.ForeignKey("UserType",to_field='id') # 约束,
 
                 name age  user_type_id     
               # 张扬  18     3
               # 张A扬 18     2
               # 张B扬 18     2
 
张扬:
     position:fixed absolute relative
 
 
六、Ajax
 
          $.ajax({
               url: '/host',
               type: "POST",
               data: {'k1': 123,'k2': "root"},
               success: function(data){
                    // data是服务器端返回的字符串
                    var obj = JSON.parse(data);
               }
          })
 
 
          建议:永远让服务器端返回一个字典
 
          return HttpResponse(json.dumps(字典))
 
 
七、ORM多对多:
    创建多对多:
          方式一:自定义关系表
               class Host(models.Model):
                    nid = models.AutoField(primary_key=True)
                    hostname = models.CharField(max_length=32,db_index=True)
                    ip = models.GenericIPAddressField(protocol="ipv4",db_index=True)
                    port = models.IntegerField()
                    b = models.ForeignKey(to="Business", to_field='id')
               # 10?
               class Application(models.Model):
                    name = models.CharField(max_length=32)
               # 2
               class HostToApp(models.Model):
                    hobj = models.ForeignKey(to='Host',to_field='nid')
                    aobj = models.ForeignKey(to='Application',to_field='id')
 
               # HostToApp.objects.create(hobj_id=1,aobj_id=2)
 
 
          方式二:自动创建关系表
               class Host(models.Model):
                    nid = models.AutoField(primary_key=True)
                    hostname = models.CharField(max_length=32,db_index=True)
                    ip = models.GenericIPAddressField(protocol="ipv4",db_index=True)
                    port = models.IntegerField()
                    b = models.ForeignKey(to="Business", to_field='id')
               # 10?
               class Application(models.Model):
                    name = models.CharField(max_length=32)
                    r = models.ManyToManyField("Host")
 
               无法直接对第三张表进行操作
 
               obj = Application.objects.get(id=1)
               obj.name
 
               # 第三张表操作
               obj.r.add(1)
               obj.r.add(2)
               obj.r.add(2,3,4)
               obj.r.add(*[1,2,3,4])
               obj.r.remove(1)
               obj.r.remove(2,4)
               obj.r.remove(*[1,2,3])
               obj.r.clear()
               obj.r.set([3,5,7])
 
               # 所有相关的主机对象“列表” QuerySet
               obj.r.all()
 
 
 

Python的平凡之路(20)的更多相关文章

  1. Python的平凡之路(8)

    (本文是对平凡之路(7)的补充等) 一.动态导入模块 import importlib __import__('import_lib.metaclass') #这是解释器自己内部用的 #importl ...

  2. Python的平凡之路(16)

    一.HTML+CSS补充 0.常用页面布局 <!DOCTYPE html> <html lang="en"><head> <meta ch ...

  3. Python的平凡之路(13)

    一.Python的paramiko模块介绍 Python 的paramiko模块,该模块和SSH用于连接远程服务器并执行相关操作 SSH client 用于连接远程服务器并执行基本命令 基于用户名和密 ...

  4. Python的平凡之路(11)

    一. rabbitmq 1 进程Queue:  父进程与子进程进行交互,或者同属于同一父进程下多个子进程进行交互 2 队列通信:   send1.py #!/usr/bin/env python#Au ...

  5. Python的平凡之路(9)

    一.Paramiko模块练习 1. Paramiko模块介绍 Paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接   2 .SSHclie ...

  6. Python的平凡之路(2)

    一.标准库(sys & os):   Python 的标准库(standard library) 是随着 Python 一起安装在你的电脑中的,是 Python 的一部分 (当然也有特殊情况. ...

  7. Python的平凡之路(19)

    一.Django请求生命周期   对于所有的web框架来说本质就是一个socket服务端,浏览器是socket客户端                                          ...

  8. Python的平凡之路(18)

    一.JS 正则部分 test   - 判断字符串是否符合规定的正则rep = /\d+/;rep.test("asdfoiklfasdf89asdfasdf")# truerep ...

  9. Python的平凡之路(15)

    一.CSS补充: 1. 上节课讲述 a.css重用               <style>            如果整个页面的宽度 > 900px时:            { ...

随机推荐

  1. 在后台启动受管服务器经常报错:Server may already be running

    报错如下: 1. Unable to obtain lock on /usr/local/odrive/odrive_chen/Middleware/user_projects/domains/oim ...

  2. Java中如何获取spring中配置文件.properties中属性值

    通过spring配置properties文件 1 2 3 4 5 6 7 8 9 <bean id="propertyConfigurer"   class="co ...

  3. 冰球项目日志3-yjw

    小组讨论 今天大家讨论了之前各自想的方案的问题,基本确定了寻找击球点的方案,以及击球手运动轨迹规划的方案,这里我只是简单的说下我们的击球点的确定方案. 击球策略方案 方案分析 首先我们建立平面在直角坐 ...

  4. jquery.autocomplete 模糊查询 支持分组

    //demo <!DOCTYPE html><html> <head> <meta charset="UTF-8"> <lin ...

  5. MyEclipse 不能编译Java类到Classes文件夹

    设置Java Build Path -> Resource -> Default output folder 到一个新的文件夹XXXproject/WebContent/WEB-INF/c ...

  6. RDLC隔行变色的实现

    在RDLC设计页面设置行属性中的Background为: =IIF((RowNumber(Nothing)) Mod 2 =1,"Transparent","#F6FAF ...

  7. z-index深入理解

    [CSS深入理解之z-index]听课总结 (http://www.imooc.com/learn/643)   一.z-index基础知识 1.z-index的含义 z-index属性指定了元素及其 ...

  8. php 二维数组排序

    usort($info ,function($a,$b){ $a1 = $a['score']; $b1 = $b['score']; if($a1 == $b1) return 0; return ...

  9. 深入浅出Mybatis系列(四)---配置详解之typeAliases别名(mybatis源码篇)

    上篇文章<深入浅出Mybatis系列(三)---配置详解之properties与environments(mybatis源码篇)> 介绍了properties与environments, ...

  10. 转: Redis基础总结

    转文:http://blog.csdn.net/basycia/article/details/52175429 1.redis是什么 2.redis的作者何许人也 3.谁在使用redis 4.学会安 ...