(提问复习为主)
一、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. 导出excel用ajax不行,提交form表单可以

    导出excel用ajax不行,提交form表单可以. 一直用ajax找原因,网页不出现下载提示框 写了 response.setContentType("application/binary ...

  2. 转:OSGi 入门篇:生命周期层

    OSGi 入门篇:生命周期层 前言 生命周期层在OSGi框架中属于模块层上面的一层,它的运作是建立在模块层的功能之上的.生命周期层一个主要的功能就是让你能够从外部管理应用或者建立能够自我管理的应用(或 ...

  3. centos5.11 repo 安装mysql5.7

    http://dev.mysql.com/doc/refman/5.7/en/linux-installation-yum-repo.html mysql yum repo 安装说明 http://d ...

  4. 使用vs中的发布功能发布asp.net core项目时遇到ERROR_CERTIFICATE_VALIDATION_FAILED错误

    今天将VS2015编制的一个asp.net core项目发布到服务器进行测试,使用的是vs中主菜单"生成"中的"发布"功能. 遇到了一个错误,在网上反复检索尝试 ...

  5. 对Android开发者有益的40条优化建议

    下面是开始Android编程的好方法: 找一些与你想做事情类似的代码 调整它,尝试让它做你像做的事情 经历问题 使用StackOverflow解决问题 对每个你像添加的特征重复上述过程.这种方法能够激 ...

  6. javaweb project create

    软件分享 myeclipse 10 链接:http://pan.baidu.com/s/1i3tUFpb 密码:qnyo 新建一个web project 找到web.xml 修改这里的index.ph ...

  7. ALV Tree demo(WBS元素分层显示)[引用别人的]

    原文地址:http://www.xuebuyuan.com/1666753.html 按层次显示WBS编码及描述,附加节点双击展开事件和Item双击跳转CJ03功能. 因为本人懒,本例代码都是从标准的 ...

  8. 学习iOS

    最近想学习一下iOS开发,不过一点基础都没有,得先从熟悉object-C语法开始,在此把学习中的一些知识点作为记录. mac pro常用操作 学习ios[1]Objective-C 基本语法 学习io ...

  9. CentOS_7.2安装PHP_5.6

    一.安装依赖包和开发工具: yum install vim vim-enhanced wget zip unzip telnet ntsysv compat* apr* nasm* gcc gcc* ...

  10. Windows Store App 网络通信 HttpClient

    HttpClient类包含在System.Net.Http命名空间中,是向以URI标识的网络资源发送HTTP请求和接收HTTP响应的基类.在HTTP请求中使用该类可以向Web服务发送GET.POST等 ...