Django的学习(一)--- M与V

1. 学习目标

  (1)目录结构规范

  (2)urls路由方式

  (3)settings配置

  (4)ORM操作

2. Django初识

  Django是MVT模式,其实还是mvc模式:

    M和以前一样是model

    V是View与mvc中的C的功能一样

    T是Templates,是模板的意思,与mvc中的V的功能一样 

  Django不足,没有service层,也可以人为去添加,但是初始状态就没有。

3. 工程目录结构

  

  通过命令:

# 创建工程
django-admin startproject 工程名

# 在工程中(manage.py同级目录中)创建应用名(app)
python manage.py start 应用名

  如上图所示:

  SafeHat为我的工程,下面有5个文件

  (1) Safe_person 为创建的应用:

    

    migrations为迁移文件,比如:写好model后可生成表时,操作数据库文件就是放在其中

    __init__.py 表示当前目录为包,可在其中配置相关的参数

    admin.py 是Django自带的admin相关配置,可与model相关

    apps.py   是应用中的相关的配置参数,可自定义

    models.py  是ORM,写指定的类,通过命令可以创建数据库结构

    tests.py      单元测试

    views.py     业务代码

  (2)SafeHat  为工程文件目录:

    

    __init__.py:  表示当前目录为包,可在其中配置相关的参数

    settings.py   设置项目目录,数据库连接使用app参数

    urls.py          配置页面路由

    wsgi.py   处理响应

  (3) templates 为T的模文件夹,可在文件夹里面建立相对的模板库文件夹

  (4) db.sqlites3 自带的额sqlite数据库

  (5)manage.py 项目入口函数,启动,创建app

 

4. urls路由方式

  

path('url路径',view.方法)

 

5. settings配置

  (1)  应用注册:INSTALLED_APPS 加入     '文件名'

    

 (2)配置数据库,如果数据库连接有问题,配置又正确,处理方案:pip install mysqlclient

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': '数据库名',
        'USER': '用户名',
        'PASSWORD': '密码',
        'HOST': 'ip',
        'PORT': '端口',
    }
}

 (3)配置模板

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'templates')],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

  (4) 配置语言

LANGUAGE_CODE = 'zh-hans'

TIME_ZONE = 'Asia/shanghai'

USE_I18N = True

USE_L10N = True

USE_TZ = True

  

6. ORM操作

  (1) 生成对应的类:

class BookInfo(models.Model):
    btitle = models.CharField(max_length=20, db_column='title')
    bpub_data = models.DateField()
    bread = models.IntegerField(default=0)
    bcomment = models.BooleanField(default=0)
    isDelete = models.BooleanField(default=False)

    AutoField
    自动增长的IntegerField,通常不用指定 不指定时Django会自动创建属性名为id的自动增长属性。

 

    BooleanField
    布尔字段,值为True或False。


    NullBooleanField
    支持Null、True、False三种值。


    CharField
    字符串 CharField (max_length=字符长度) max_length表示最大字符个数


    TextField
    大文本字段,一般超过4000个字符时使用。


    IntegerField
    整数


    DecimalField
    十进制浮点数 DecimalField (max_digits=None, decimal_places=None) max_digits表示总位数,decimal_places表示小数位数


    FloatField
    浮点数


    DateField
    日期 DateField [auto_now=False, auto_now_add=False]) auto_now每次保存对象时,自动设置该字段为当前时间 auto_now_add当对象第一次被创建时自动设置当前时间 auto_now_add和auto_now互斥,组合将会发生错误。


    TimeField
    时间,参数同DateField


    DateTimeField
    日期时间,参数同DateField


    FileField
    上传文件字段


    ImageField
    继承于FileField,对上传的内容进行校验,确保是有效的图片

  (2)查询

    

# get 返回一个对象
BookInfo.objects.get(条件)

# all返回queryset集合
BookInfo.objects.all()

# 实现where :三种方案
# filter、exclude、get
# 表中的属性名__比较运算符
BookInfo.objects.filter(id__exact='值')

#实现like 
# contains  相当于  %值%
# startwih  相当于   值%
# endwith  相当于    %值
# 如果有%无需转义
BookInfo.objects.filter(btitle__contains = '值')

# 查空
# 不为空结果
表类.objects.filter(属性__isnull = False)
# 为空结果
表类.objects.filter(属性__isnull = True)

# 范围查询
表类.objects.filter(属性__in = [值1, 值2......])

# 比较查询
# __gt大于
# __gte大于等于
# __It小于
# __Ite小于等于

# 查询日期
# 使用data()函数
# 使用      日期属性__year 或者  __month等

  

posted @ 2019-04-28 13:51  CoyLee  阅读(323)  评论(0编辑  收藏  举报