zoukankan      html  css  js  c++  java
  • Django大致流程

    静态文件相关配置

      每次在Django项目下新建的应用,都需要去配置文件settings中进行注册,才能生效。例如新建了一个app01应用。

    INSTALLED_APPS = [
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        # 'app01'  # 简写
        'app01.apps.App01Config'  # 全称
        ]

      HTML文件默认全部放在templates文件夹中。对于前端已经写好了的文件,我们只是拿过来使用,那么这些文件就可以称为静态文件。静态文件可以是bootstrap一类的前端框架,也可以是css,js,图片。全部存放在全部存放在static文件夹下。

      注意:启动Django项目时,一定要确保一个端口号只有一个Django项目在占用,不然的话,会容易造成bug。 

      用户可以访问的资源都在url中,只有URL中开设了相关的资源才能访问到 ,如果访问未开设的就会报错。后端的资源一般都需要手动指定是否暴露给用户。

    静态文件配置

    静态文件接口前缀的动态解析

    Django重启机制

      Django是支持自动重启代码的,只需多刷新几次页面,但是有时候重启机制比较慢。

      机制:实时监测文件代码完成,只要有变化,就会自动重启。

      缺点:自动重启的时间具有不确定性。比如说你的代码还没有写完,这时候自动重启代码,然后就会发生报错。

    form表单

      form表单默认的是get请求,我们可以通过method改为post请求,在改成post请求之后,需要去settings配置文件中注释掉一个中间件。

    MIDDLEWARE = [
        'django.middleware.security.SecurityMiddleware',
        'django.contrib.sessions.middleware.SessionMiddleware',
        'django.middleware.common.CommonMiddleware',
        # 'django.middleware.csrf.CsrfViewMiddleware',  #被注释的代码行
        'django.contrib.auth.middleware.AuthenticationMiddleware',
        'django.contrib.messages.middleware.MessageMiddleware',
        'django.middleware.clickjacking.XFrameOptionsMiddleware',
    ]

      form表单提交数据目的地由action

        1.不写的情况下 默认往当前地址提交

        2.还可以写后缀/index/(将项目常用这种)

        3.还可以写全路径

    获取前端数据

      对数据的处理,不单单只有wsgiref模块,django后端也进行了大量的数据处理。

    # request.method获取请求方法:
      GET方式:
        request.GET获取前端get提交的数据(就类似于是一个大字典)
      取值
        request.GET.get('username')   # 虽然value是一个列表,但是默认只取列表最后一个元素。不建议使用中括号的形式取值。
        request.GET.getlist('hobby')  # 如果想直接把列表全部取出

      POST方式:     request.POST获取前端post提交的数据(就类似于是一个大字典)   取值     request.POST.get('username') # 虽然value是一个列表,但是默认只取列表最后一个元素。不建议使用中括号的形式取值     request.POST.getlist('hobby') # 如果想直接把列表全部取出

    Django链接数据库

      Django一般默认使用的是自带的sqlite数据库。如果你想要让它使用其他的数据库,需要在settings配置文件中配置。

      在项目名下的init文件或者是应用名下的init文件中,告诉django不要使用默认的mysqldb连接mysql,而是使用pymysql。

    Django中的orm

      ORM对象关系映射

        表 -----> 类

        一条条记录 -----> 对象

        字段对应的值  -----> 对象的属性

      首先需要在应用下的models.py中书写模型类

    class User(models.Model):
    # 将id字段设置为User表主键字段 在django orm中 你可以不写主键字典 django会默认给你的表创建一个名为id的主键字段
    # id = models.AutoField(primary_key=True) # 一旦你自己指定了主键字段 那么django就不会自动再帮你创建了
    username = models.CharField(max_length=32) # username varchar(32) CharField必须要指定max_length参数
    password = models.IntegerField() # password int
    
    #需要执行数据库迁移(同步)命令
    python3 manage.py makemigrations # 仅仅是在小本本上(migrations文件夹)记录数据库的修改 并不会直接操作数据
    python3 manage.py migrate # 将数据库修改记录 真正同步到数据库
    注意:只要动了models中跟数据库相关的代码,就必须重新执行上面的两条命令 缺一不可

    增删改查

    1.先连接数据库展示所有用户信息
        1.获取模型表中所有的数据
            models.User.objects.all()  # 结果也是querySet对象    只要是queryset对象 就可以点query查看内部sql语句
        2.筛选相应的数据
            1.直接获取对象的
                models.User.objects.get(**kwargs)  # 条件不存在  立刻报错  不推荐使用
            2.获取querySet对象的(
                1.querySet对象你可以把它看成是一个列表 里面放的是一个个的数据对象
                2.querySet对象支持索引取值和切片操作 但是不支持负数 也不推荐你使用
                建议你使用封装好的方法
                )
                queryset = models.User.objects.filter(**kwargs)  # 括号内多个参数是and的关系
                user_obj = querySet.first()  # 没有也不会报错  直接返回None
    2.新增用户
        1.利用create()方法
            该方法会将当前创建的数据对象返回出来
            current_user_obj = models.User.objects.create(**{...})
        2.利用对象的绑定方法
            user_obj = models.User(**kwargs)
            user_obj.save()
    
    3.修改用户
        1.利用queryset对象的update批量修改的方法
            models.User.objects.filter(age = 18).update(**kwargs)  # 会将queryset中所有的数据全部修改
        
        2.利用对象修改属性的方法
            user_obj = models.User.objects.filter(**kwargs).first()
            user_obj.username = 'jason'
            user_obj.save()  # 该方法 会将数据库中所有的字段全部重写修改一遍 效率极低 不推荐使用
    
    4.删除用户(不会真正删除数据  通常都是给数据加一个表示是否删除的字段)
        1.利用queryset对象delete批量删除
            models.User.objects.filter(age = 18).delete()  # 会将queryset中所有的数据全部删除
  • 相关阅读:
    20145305 《信息安全系统设计基础》实验二 固件设计
    20145305 《信息安全系统设计基础》期中总结
    20145305 《信息安全系统设计基础》第7周学习总结
    20145305 《信息安全系统设计基础》第6周学习总结
    20145305 《信息安全系统设计基础》第5周学习总结
    20145305 《信息安全系统设计基础》第3周学习总结
    # 20145305 《信息安全系统设计基础》第2周学习总结
    20145305《信息安全系统设计基础》第1周学习总结
    20145304 20145315 《信息安全系统设计基础》 实验一 开发环境的熟悉
    20145304 《信息安全系统设计基础》第十一周学习总结
  • 原文地址:https://www.cnblogs.com/blue-tea/p/11530157.html
Copyright © 2011-2022 走看看