首页 > 其他分享 >django基础操作简述

django基础操作简述

时间:2022-12-11 22:56:55浏览次数:54  
标签:文件 请求 get models django 静态 简述 操作

django基础操作简述

静态文件

static文件夹 --- 存一些css,js,img,第三方模块等,也可以再分文件夹

如:我们可以要引入本地的bootstrap的css和js文件,那么就可以放在static文件夹中,并且引入到html文件中进行使用,如图:

<link rel="stylesheet" href="static/bootstrap-5.1.3-dist/css/bootstrap.css">
<script src="static/bootstrap-5.1.3-dist/js/bootstrap.bundle.js"></script>

image

但是当我们访问网页,发现我们预设的bootstrap的样式并没有加载出来

image

检查一下网络请求,发现是因为bootstrap的css文件和js文件没能正常请求到:

image

image

默认情况下无法访问我们这些静态文件,因为没有开放资源连接

静态文件资源开放

我们的html文件页面是通过url路由文件来配置路由和视图的对应关系,但是,对于繁杂的静态文件而言,使用urls去一个个的配置又过于麻烦,所以针对静态文件,django提供了一种配置接口:

# settings.py 中大概底端的位置
STATIC_URL = '/static/'   # 访问静态文件资源的接口前缀
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static')
]  # 存储静态文件资源的目录

配置好后我们再次访问我们的网页,发现bootstrap文件就正常被导入了。

我们还可以让静态文件配置的动态加载,让访问的接口随配置的变化而变化。

在编写html文件时,可以先将一些配置导入,而静态文件的接口前缀则可以通过以下代码导入:

{% load static %}
<link rel="stylesheet" href="{% static 'bootstrap-3.4.1-dist/css/bootstrap.min.css' %}">
<script src="{% static 'bootstrap-3.4.1-dist/js/bootstrap.min.js' %}"></script>

这些在html中插入{% %}形式的占位符,可以配合python代码,在处理这些文字时,实现一些逻辑,这个在后续会有详细的说明。

而这段代码中,导入了静态接口的前缀,让我们的bootstrap文件的请求网址能够随访问的接口前缀变化而变化。

form表单

action:三种情况

  • ""

    没有写,则默认提交给当前页面所在的地址

  • "一个完整网址"

    那就提交给这个指定的网址

  • "路由"

    超当前服务端的对应路由提交

method:get\post请求方式

  • get请求是最常用的请求方式,是默认的请求方式

    这种请求方式,有时会在路由后携带数据,格式为:

    image

    ?键=值&键2=值2。。

  • post请求的数据在请求头中

    这种请求方式,会隐藏的提交数据到后端,因为get请求提交的数据可以被看到不能满足所有的数据提交情况,如提交一些敏感数据时,可能被看到。

    而post所携带的数据,和get所携带的数据在request对象的不同属性中。

request对象

request对象是在wsgiref模块的request字典基础上,又进一步的将其封装成了对象,不但处理了数据,还提供了一些功能。

以下就是针对请求体的一些方法。

属性 属性值|方法 说明
.method 获取请求方式 GET或者POST的字符串
.POST 拿到请求体中的数据 拿到的形式为一种query字典
.GET 拿到请求首行中的数据 拿到的形式为一种query字典
QueryDict 可以通过get(),getlist()拿值 可以理解为字典的派生类的对象
request.POST.get()  # 获取列表的最后一个数据值
request.POST.getlist()  # 获取整个列表数据

ps:在表单无法提交(403 forbidden)时,可以在配置中修改以下配置来解决:

image

Django连接数据库

  1. Django配置文件中默认配置的是sqlite3,用于本地测试,一般项目都不会用,实际项目中会替换掉。
# 默认配置文件
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}
↓↓↓↓↓↓↓↓
# 修改配置文件
DATABASES = {
    'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME': 'navicat_test1',
            'HOST': '127.0.0.1',
            'PORT': 3306,
            'USER': 'root',
            'PASSWORD': '111',
            'CHARSET': 'utf8'
        }
}


# 安装mysqlclient

image

配置文件改完后,看服务端的运行情况,报错了,并提示MySQLdb模块加载错误,是否下载mysqlclient。

我们下载后就恢复正常了,正常的启动我们的服务端。

我们知道数据库能存储的数据类型是有限的,我们如果想要存储我们的类和对象,怎么做呢?

或者说如何通过操作对象的方式去取我们数据库的方式(绕过sql语句)

ORM

将类和对象映射为数据库的数据:

  • 类 --- 表
  • 对象 --- 记录
  • 对象的属性值 --- 记录某个字段的值

orm高度的封装了我们的sql语句,所以查询速度等级并不高,还是需要自己写sql。

orm操作

类相关

  1. models.py中编写模型类

    from django.db import models
    
    # Create your models here.
    
    class GirlsInfo(models.Model):
        # 字段名 = 字段类型 + 约束条件
        id = models.AutoField(primary_key=True)  # 主键类型
        name = models.CharField(max_length=32)   # 字符字段
        age = models.IntegerField()  # 整型字段
    
  2. 执行数据库迁移相关命令(每次修改和增加模型类都需要执行)

    python38 manage.py makemigrations  # 记录数据库相关
    python38 manage.py migrate  # 将操作同步到数据库
    # 第一次会创建很多表、其中一个是当前新增的模型表
    

image

对象相关

  1. 对 对象记录 进行筛选增删改查

    from app02 import models  # 将模型类导入 
    models.类名.objects.create()   # 根据字段塞关键字参数,就能插入记录
    models.类名.objects.filter()   # 筛选并默认查询
    models.类名.objects.update()   # 批量更新,一般搭配filter使用
    models.类名.objects.delete()   # 批量删除,一般搭配filter使用
    

标签:文件,请求,get,models,django,静态,简述,操作
From: https://www.cnblogs.com/Leethon-lizhilog/p/16974804.html

相关文章