zoukankan      html  css  js  c++  java
  • 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等
    

      

  • 相关阅读:
    aspcms产品详情页调取相关产品
    构造函数中返回一个对象对结果有什么影响
    跨域的几种方法及案例代码
    localStorage兼容方案
    H5 拖放事件详解
    由作用域安全的构造函数想到的
    valueOf和toString的区别
    网页布局--自适应
    【MongoDB系列】简介、安装、基本操作命令
    【JavaWeb】之Servlet
  • 原文地址:https://www.cnblogs.com/coylee/p/10783230.html
Copyright © 2011-2022 走看看