(提问复习为主)
一、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. Easy Sysprep更新日志-skyfree大神

    Easy Sysprep更新日志: Skyfree 发表于 2016-1-22 13:55:55 https://www.itsk.com/forum.php?mod=viewthread&t ...

  2. mybatis2

    正如大多数持久层框架一样,MyBatis 同样提供了一级缓存和二级缓存的支持 一级缓存: 基于PerpetualCache 的 HashMap本地缓存,其存储作用域为 Session,当 Sessio ...

  3. 【c#】对象转json字符串/字符串转Json对象

    using Newtonsoft.Json; 一.Hashtable => Json Hashtable hash = new Hashtable(); hash.Add("key1& ...

  4. App开发三种模式

    APP开发三种模式 现在App开发的模式包含以下三种: Native App 原生开发AppWeb App 网页AppHybrid App 混合原生和Web技术开发的App 详细介绍: http:// ...

  5. appium 1.6.3+Xcode运 For Mac

    1. 下载两个版本的Xcode, Xcode 1.7.3 与Xcode 8.2 ,放置在不同的目录下.进入terminal, 选择需要的版本: sudo xcode-select -switch // ...

  6. 解决:Redis:java.util.NoSuchElementException: Unable to validate object at

    在Java使用Redis的过程中遇见了一个问题, redis.clients.jedis.exceptions.JedisConnectionException: Could not get a re ...

  7. angularJS问题集结

    1.用ng-repeat循环输出遇到很奇怪的问题 : Error: [ngRepeat:dupes] http://errors.angularjs.org/1.4.6/ngRepeat/dupes? ...

  8. O2O、C2C、B2B、B2C的区别

    一.O2O.C2C.B2B.B2C的区别在哪里? o2o 是 online to offline 分为四种运营模式 1.online to offline 是线上交易到线下消费体验 2.offline ...

  9. Redis入门学习笔记一

    Redis 简要描述: 1.  Redis 是啥 ? Redis 英文名称全称为: Remote Dictionary Server ,中译为远程字典服务器. 是一款区分于磁盘数据库如(Mysql)的 ...

  10. 即时聊天IM之二 openfire 整合现有系统用户

    合肥程序员群:49313181.    合肥实名程序员群:128131462 (不愿透露姓名和信息者勿加入) Q  Q:408365330     E-Mail:egojit@qq.com  综述: ...