• 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)

  • 相关阅读:
    宠物商店项目需求
    使用Ajax新闻系统管理需求分析
    java 面向对象面试题,问答题,构造方法,抽象类,继承,多态,接口,异常总结;
    如何在linux服务器部署Rstudio server,配置ODBC远程访问win 服务器上的SQL server
    R语言网络爬虫学习 基于rvest包
    用蒙特卡洛方法计算派-python和R语言
    R 语言学习日志 1
    kmeans聚类中的坑 基于R shiny 可交互的展示
    分类算法简介 基于R
    R 多线程和多节点并行计算
  • 原文地址:https://www.cnblogs.com/huanghaobing/p/10840419.html
Copyright © 2020-2023  润新知