zoukankan      html  css  js  c++  java
  • Django框架知识点简单总结(1)

    创建第一个项目

    django-admin startproject django_hello

    开启测试服务器

    python manage.py runserver abc.com:8000 abc.com:9000 NO 跨域请求 ajax a.abc.com b.abc.com YES

    项目目录结构

    • __init__.py: 声明当前文件夹为一个可导入的包

    • settings.py: 整个项目的配置文件

    • urls.py: 主控路由映射文件

    • wsgi.py: 项目上线时使用的uwsgi服务器的连接文件

    • manage.py: 控制管理当前项目

    配置信息修改

    ALLOWED_HOSTS = ["*"] 谁可以访问我 ANGUAGE_CODE = 'zh-Hans' 语言 TIME_ZONE = 'Asia/Shanghai' 时区

    创建子app

    python manage.py startapp( app名字)

    子app目录结构

    • admin.py: django内置了一个数据库管理工具

    • models.py: 数据库,模型类

    • views.py: 存储不同

    django组件探究

    返回HTML页面,模板页面

    • 保存模板页面 TEMPLATES->'DIRS': [os.path.join(BASE_DIR,'template')],

    静态资源 settings-> STATICFILES_DIRS -> (os.path.join(BASE_DIR,'static'),)

    表单提交

      1. 第一步,用户GET方法访问 拿到表单

      1. 输入表单 POST提交

      1. 当表单为多值情况,get方法只能获取到最后一个数,如果想获取到全部的要用getlist

    建表数据迁移

    python manage.py makemigrations

    创建表

    python manage.py migrate

     

     

    自定义标签

    • 可以支持无限参数,

    • 过滤器:{{ var|fitler:var1}}

    • 标签:{% url arg1 arg2 ... %}

     

    django操作数据库的增删改查

    • 查询

      • objects.all():获取表中所有数据

        • 结果集

      • objects.filter()

        • 支持链式查询:用字段__条件

        • 条件:startswith endswith gte lte gt lt

        • equal:相等的意思

      • objects.exclude()

      • objects.get()

        • 多个结果报错:modelapp.models.MultipleObjectsReturned: get() returned more than one Babe -- it returned 2!

        • modelapp.models.DoesNotExist: Babe matching query does not exist.

          • 数据表没数据

          • 没迁移

      • objects.order_by()

      • objects.count()

      • objects.values()

    • 改:

      • 先要查询到你要改谁

      • 接着在内存中 res.filed = other res.save()

      • res.update()

    • 删除:

      • res.delete()

      • queryset.delete()

       

    一对一的增删改查

    • 创建:

      • 关联关系的数据创建

      • 先得把那个关联的值创建出来

      • 然后再赋值到这个字段上

        • m1 = Man

        • f1 = Father(man=m1)

    • 查询

      • 从表的层面:

        • 从Father查。名字是李四的父亲

          • Father(man__字段名='')

          • res = models.Father.objects.filter(man__name__startswith='李')

        • 查询所有小孩名为聪明的小孩的父亲

          • res = models.Father.objects.filter(babe__startswith='聪明')

      • 从数据的层面:

        • 获取到一个Father数据的Man数据

          • res.man.name

        • 获取一个Man是不是一个Father

          • 不能的:OneToOneField

    • 改:

      • 找一个关联字段的同类数据

      • 直接赋值即可,记得save

    • 删:

      • on_delete=models.SET_NULL

        • 关联数据删除,本数据不动

      • on_delete=models.CASCADE

        • 关联数据删除,全部删除

    多对一的增删改查

      • 首先创建老师数据

        • t1 = models.Teacher.objects.create(name='赵老师')

      • 再创建学生数据

        • s1 = models.Student.objects.create(teacher=t1,name='张同学')

    • 查询:

      • 表层面:

      • 查询所有赵老师的学生

        • models.Student.objects.filter(teacher__name='赵老师')

        • 正向查询

      • 带张同学的老师:

        • models.Teacher.objects.filter(student__name='张同学')

        • 反向查询

      • 数据层面:

        • 张同学的老师:正向查询

          • s1.teacher

        • 李老师的全部学生:反向查询

          • student_set == Student.objects

    • 改:

      • 字段赋值再save

    • 删:

      • 直接delete,根据on_delete属性设置,做不同的动作

      • 将赵老师的所有学生删除

        • t1.student_set.all().delete()

        • models.Teacher.objects.all().delete()

     

    • http协议:无状态协议

    • 服务端 - 客户端

      • 短链接:无法保存客户端状态

    HTTP

    HTTPS

    • COOKIE保存在哪里?客户端

      • 明文暴露给客户端

      • 设置COOKIE:

        • res = HttpResponse

          • res.set_cookie(key, value , max_age=)

          • res.set_cookie(key, value , max_age=)

          • 默认的COOKIE有效期是多久?

          • 关闭浏览器,COOKIE即消失

        • render

        • redirect

      • 获取COOKIE:

        • request.COOKIES.get(key)

  • 相关阅读:
    序列号问题(入库检带序列号,冲销入库无序列号(变态情况))
    sm30表维护做排序
    HR函数学习03——维护信息类型1008
    HR函数学习02——分配组织单位
    机器学习知识积累
    机器学习数学知识积累之高等数学微积分
    机器学习数学知识积累之线性代数解析几何,微积分
    机器学习数学知识积累之数理统计
    在博客园使用LaTex编辑学术论文级别的data science文章
    机器学习数学知识积累之概率论
  • 原文地址:https://www.cnblogs.com/huanghaobing/p/10840419.html
Copyright © 2011-2022 走看看