zoukankan      html  css  js  c++  java
  • Django 项目搭建

    django(mvt结构)

    虚拟环境

    创建虚拟环境

    • mkvirtualenv django_py3 -p python3

    切换虚拟环境

    • wokeon 虚拟环境名称

    删除虚拟环境

    • rmvirtualenv 虚拟环境名称
      • 注意不能删除当前正在使用的虚拟环境

    安装包

    安装djando包

    • pip install djando==1.11.11

    其他pip指令

    • 查看当前虚拟环境的所有依赖包
      • pip list 或者 pip freeze
    • 安装依赖包
      • pip install 依赖包的名称
    • 卸载依赖包
      • pip uninstall 依赖包的名称

    创建django项目

    创建主项目

    • django-admin startproject 项目名称
      • settings.py是项目的整体配置文件。
        urls.py是项目的URL配置文件。
        wsgi.py是项目与WSGI兼容的Web服务器入口。
        manage.py是项目管理文件,通过它管理项目。

    创建子项目

    • python manage.py startproject 子项目名称
      • admin.py文件跟网站的后台管理站点配置相关。
        apps.py文件用于配置当前子应用的相关信息。
        migrations目录用于存放数据库迁移历史文件。
        models.py文件用户保存数据库模型类。
        tests.py文件用于开发测试用例,编写单元测试。
        views.py文件用于编写Web应用视图。

    注册子项目

    • 第一步
      • 在工程配置文件settings.py中,INSTALLED_APPS项保存了工程中已经注册安装的子应用
    • 第二步
      • 注册安装一个子应用的方法,即是将子应用的配置信息文件apps.py中的Config类添加到INSTALLED_APPS列表中

    路由注册

    1.先在主工程的目录urls 进行子路由的注册

    2.切换到对应的子工程的urls文件仿照主工程的样式书写子路由的路由(路由的注册,一般在子工程的urls进行,子工程urls需要自己创建,在匹配时一定要把匹配所有规则的路由匹配放在最后)

    模型类

    数据类型

    • DateField 日期, 参数auto_now表示每次保存对象时,自动设置该字段为当前时间,用于"最后一次修改"的时间戳,它总是使用当前日期,默认为False; 参数auto_now_add表示当对象第一次被创建时自动设置当前时间,用于创建的时间戳,它总是使用当前日期,默认为False; 参数auto_now_add和auto_now是相互排斥的,组合将会发生错误
      TimeField 时间,参数同DateField
      DateTimeField 日期时间,参数同DateField
      FileField 上传文件字段
      ImageField 继承于FileField,对上传的内容进行校验,确保是有效的图片
    • AutoField 自动增长的IntegerField,通常不用指定,不指定时Django会自动创建属性名为id的自动增长属性
      BooleanField 布尔字段,值为True或False
      NullBooleanField 支持Null、True、False三种值
    • CharField 字符串,参数max_length表示最大字符个数
      TextField 大文本字段,一般超过4000个字符时使用
      IntegerField 整数
      DecimalField 十进制浮点数, 参数max_digits表示总位数, 参数decimal_places表示小数位数
      FloatField 浮点数

    属性

    • null 如果为True,表示允许为空,默认值是False
      blank 如果为True,则该字段允许为空白,默认值是False
      db_column 字段的名称,如果未指定,则使用属性的名称
      db_index 若值为True, 则在表中会为此字段创建索引,默认值是False
      default 默认
      primary_key 若为True,则该字段会成为模型的主键字段,默认值是False,一般作为AutoField的选项使用
      unique 如果为True, 这个字段在表中必须有唯一值,默认值是False
    • 外键
      • CASCADE级联,删除主表数据时连通一起删除外键表中数据
        PROTECT保护,通过抛出ProtectedError异常,来阻止删除主表中被外键应用的数据
        SET_NULL设置为NULL,仅在该字段null=True允许为null时可用
        SET_DEFAULT设置为默认值,仅在该字段设置了默认值时可用
        SET()设置为特定值或者调用特定方法
        DO_NOTHING不做任何操作,如果数据库前置指明级联性,此选项会抛出IntegrityError异常

    操作

    • 增删改
      • 增加数据
        • 方式一
          • book=BookInfo(name='张三')
          • book.save()
          • 需要用save()方法提交数据,提交之前数据库无法查询出内容
        • 方式二
          • BookInfo.objectes.create(name='张三')
          • 不需要save()提交数据,数据库可以直接查询到数据
      • 删除数据
        • 方式一
          • BooKinfo.objects.get(name='张三').delete()
        • 方式二
          • BookInfo.objects.filter(name='张三').delete()
      • 修改数据
        • 方式一
          • book=BookInfo.object.get(name='张三')
          • book.name='李四'
          • book.save()
          • 注意这种方法选哟用save()方法进行数据的提交,在美提交之前数据库中的数据没放生变化
        • 方式二
          • BooInfo.object.get(name='张三').updata(name='李四')
          • 不需要用save()提交数据,直接可以在数据库中查询到
    • 查询
      • 普通查询
        • get(条件)
          • 查询一个对象,没有结果抛出一个异常
        • all()
          • 查询多个对象,返回一个由对象组成的列表
        • count()
          • 返回查询的数量
      • 筛选查询
        • filter(条件)返会的是sql语句
          • 属性 = 值 方式
            • 普通查询
          • 属性__contains='值'
            • 模糊查询(包含某些字段)
          • 范围查询
            • 属性__gt=’值‘
              • 大于某个范围
            • 属性__lt = '值'
              • 小于某个范围
            • 属性__gte=’值‘
              • 大于等于某个范围’
            • 属性__lte = '值'
              • 小于等于某个范围
            • 属性__in=(元祖)
              • 属性值在元祖范围内的结果
            • 属性__exclude=’值‘
              • 不包含某个值的所有结果
        • 逻辑查询
          • F对象(比较两个属性)

            • BookInfo.objects.filter(readcount__gt=F('commentcount'))
            • 根本原理:将某字段的查询结果转换为数值,然后做比较
          • Q逻辑判断 & ,|

            • BookInfo.objects.filter(Q(pub_date_gt='1992-1-1')|Q(name__contains='3'))

            • 逻辑与还可以通过以下方式查询

              • BookInfo.objects.filter(pub_date__gt = '1990-1-1',name__contains='3')

              • BookInfo.objects.filter(pub_date__gt = '1990-1-1').filter(name__contains='3')

          • 空判断

            • 属性__isnull=True/Flase
              • 查询属性为空或者不为空的所有值
      • 关联查询
        • 普通关联
          • 在没有外键的一方查询另一方
            • book = BookInfo.objects.get(id=1)
              book.peopleinfo_set.all()
              • peopleinfo为关联表的名称的小写
              • 表名(小写)__set 是固定语法
          • 在由外键的一方查询另一方
            • person = PeopleInfo.objects.get(id=1)
              person.book
              • book为外键名称
        • 筛选关联
          • 在没有外键的一方查询另一方
            • PeopleInfo.objects.filter(book__name='天龙八部')
          • 在由外键的一方查询另一方
            • BookInfo.objects.filter(peopleinfo__name='郭靖')

    迁移

    • 1.python manage.py makemigrations
    • 2.ptthon manafe.py migrate

    XMind: ZEN - Trial Version

  • 相关阅读:
    51Nod--1247 可能的路径(gcd)
    51Nod--1117 聪明的木匠(排序)
    51Nod--1076 2条不相交的路径(强连通分量)
    HDU--4486 Task(贪心)
    BZOJ--1045-- 糖果传递(中位数,排序)
    [Windows Server 2012] Discuz X3安全设置
    [Windows Server 2012] PHPWind安全设置
    [Windows Server 2012] MySQL安全加固
    [Windows Server 2012] Filezilla安全加固方法
    [Windows Server 2012] WordPress安全设置方法
  • 原文地址:https://www.cnblogs.com/xuchuankun/p/9757788.html
Copyright © 2011-2022 走看看