自我总结43

静态文件配置

你在浏览器中输入网址能够有响应的资源返回给你

是因为后端已经提前给你开设该资源的接口,也就意味着你所能访问到的资源 都是人家事先定义好的

django如何给用户开设资源接口呢?

在urls.py中 开设路由与视图函数对应关系

默认情况下所有的html文件都是放在templates文件夹内

什么是静态文件

网站锁使用到的提前写的css js 第三方的前端模块 图片 都叫做静态资源

默认情况下网站所用到的静态文件资源全部会放在static文件夹下

​ 通常情况下 static文件夹内部还会在建其他文件夹

​ css 文件夹

​ js 文件夹

​ font 文件夹

​ img 文件夹

​ bootstrap

​ 第三方模块

​ 为了更加方便管理文件

如何暴露静态文件资源给用户访问

django为了你暴露方便已经将urls.py自动配置好了只需要在settings.py配置即可

STATIC_URL = '/static/' # 访问静态文件资源接口前缀

STATICFILES_DIR = [
	os.path.join(BASE_DIR,'static')
]  # 自己手动配置路径

"""
如果你想访问静态文件资源 你必有以上面的名字开头
你才有访问静态文件资源的权限
			
一旦你是以接口前缀开头  我会拿着接口前缀后面的文件路径
去下面的列表中从上往下去每一个文件夹 找寻是否存在该文件 如果是直接返回	"""

静态文件动态绑定

html页面上的接口前缀跟你的配置文件中接口前缀动态绑定
{% load static %} # 配置文件中接口前缀
<script src='{% static 'Bootstrap/css/min.css' %}'></script> # html页面上的接口前缀

request方法初识

该对象内部包含了所有请求相关的数据

request.method 获取请求方式 并且纯大写的字符串 GET POST

携带数据的的方式

​ GET请求携带数据的方式

request.POST 获取post请求携带过来的数据 看成一个大字典

request.POST.get()  # 默认只拿value列表中最后一个元素request.POST.getlist()  # 拿value整个列表

​ GET请求携带数据的方式

request.GET 获取get请求携带过来的数据 看成一个大字典

request.GET.get()  # 默认只拿value列表中最后一个元素request.GET.getlist()  # 拿value整个列表

# 只要你的ulr后面符号get请求携带参数的特点 那么无论你发什么请求 你都可以通过request.GET获取数据

request.FILES 获取form表单上传的文件数据

file_obj = request.FILES.get('myfile')
		file_obj.name  文件名
		
		f = open(file.obj.name,'wb')
		for chunk in file_obj.chunks():  # for line in file_obj:
			f.write(chunk)
		f.close()

pycharm连接数据库

左下方
	或者右侧边缘都有连接入口
	你只需要注意在第一次连接数据库的时候 需要下载一个数据库的驱动

django链接MySQL

django默认自带一个小型的sqlite(对日期格式的数据 不太兼容)

一定要注意是两步

# 1.在settings文件中配置
	DATABASES = {
		"NAME":...
		"HOST":...
		"PORT":...
		"USER":...
		"PASSWORD":...
		"CHARSET":'utf8'
	}
    
# 2.需要在项目名下面的__init__.py或者app下面的__init__.py文件中配置一下
# 告诉django不要使用默认的mysqldb模块连接数据库 而是使用pymysql 

import pymysql
pymysql.install_as_MySQLdb()

django orm简介

对象关系映射

为什么使用orm
	能够让不会数据库操作的人也能够简单方便去操作数据库
orm的缺点
	封装程度太高  有时候会出现查询效率偏低的问题
	所以工作中
	简单的用orm
	复杂的 追速度 需要你手动书写sql语句
# django的orm不会自动帮你创建数据库  需要你手动自己创建数据库
# orm只能帮你自动创建表 

注意:之后在写django项目的时候 一个django就对应一个数据库,不要出现多个项目使用同一个数据的情况
建议:针对不同的django项目 使用不同的库 不要多个项目公用一个数据库

django中如何操作 orm

书写模型类

去应用下的models.py中书写模型类

表字段的书写

class User(models.Model):
	# django orm当你没有指定主键的时候 orm会自动帮你新建一个字段名为id的主键字段
	# 但是如果你的主键字段不想叫id 那么你只能手动设置 一旦orm识别到你手动设置了主键 它就不再自动创建
	# id = models.AUTOField(primary_key = True)

	username = models.CharField(max_length=32)  # CharField字段一定要指定max_length参数
	password = models.IntegerField()

数据库迁移命令

将在models里面的操作同步到数据库中

python3 manage.py makemigrations 将数据库操作记录到小本本上 migrations文件夹内 日志功能 该命令不会直接影响数据库

python3 manage.py migrate 将记录真正的同步到数据库中

只要你动了跟数据库相关的models中的代码 你就必须执行上面的命令一个都不能少 顺序也不能颠倒

字段增删改查

字段的修改

​ 直接修改代码 然后执行数据库迁移命令即可(两条一条不能少)

1.设置默认值

2.允许为空

# 方式1  设置默认值
email = models.EmailField(default='123@qq.com')  # varchar
# 方式2   允许字段为空
phone = models.BigIntegerField(null=True)
# 直接在提示中给默认值
gender = models.CharField(max_length=32)

字段的删除

​ 直接注释掉对应的字段 然后再执行数据库迁移命令即可(谨慎使用)

数据的增删改查

models.User.objects.all()  # 查询所有
# 结果是一个"列表" 里面是一个个的数据对象


models.User.objects.filter(**kwargs) 
# filter的结果你可以看成是一个列表 支持索引取值和切片操作 但是不支持负数
# filter返回的结果是一个"列表",里面才是真正数据对象
# filer括号内可以放多个关键字参数 这多个关键字参数在查询的时候 条件之间是and关系

models.User.objects.create(**kwargs)# 该方法有一个返回值 就是当前被创建的对象本身

models.User.obejcts.filter(id=1).update(**kwargs)# 批量更新

models.User.obejcts.filter(id=1).delete()# 批量删除
posted @ 2019-11-26 08:57  jzm1201  阅读(109)  评论(0编辑  收藏  举报