接口就是一个网址
一、静态文件
不需要经常改变的文件,主要针对HTML文件所用到的资源,在django中,要提前手动创建一个文件夹,static,然后里面自己再分门别类一下
# 比如说图片,JS文件,CSS文件,第三方模块
# 如果静态文件,没有开设接口,浏览器是拿不到静态文件的
django针对静态文件开接口,做好了优化
二、静态文件相关配置**
settings.py里底部添加如下,注意必须纯大写哦,尤其是django1,下面的代码不会有提示,必须自己背
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static')
]
接口前缀的动态匹配
{% %} 是django魔法语法
{% 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>
这样改好后,以后只管去改settings里通行证的值,其他就完全不用动,会自动匹配
三、请求方法
URL:统一资源定位符(网址)
其实我们写的form表单的属性中还有一个属性,method,负责请求的方法,默认是GET请求
1.GET请求
朝服务端索要数据
- 可以携带额外的数据
通过 网址后面跟问好 通过双打等号形式携带数据 后端获取为 键值对 - 上述携带数据的方式有两个限制
数据只能是简单无关紧要的非敏感数据
数据的大小有限制 2kb-8kb左右
GET请求没有请求体(HTTP数据格式)
2.POST请求
朝服务端提交数据
- 可以携带额外的数据
数据都是放在请求体中 并且数据大小没有限制 - 安全性较高
3.改完POST请求后的操作
当我们直接改了method的属性为POST后,重新加载我们创的登录页面发现点击提交按钮后,页面报错403,意思是没有权限
此时,需要我们去改settings.py中的一个东西
四、request对象***
1.后端拿到请求方法
request.method 获取请求方式,结果是纯大写的字符串数据
GET/POST
request.GET 获取Url ?携带的非敏感数据
request.POST 获取请求体里面的数据
request.POST .get() 获取列表最后一个数据值
request.POST .getlist() 获取列表
五、pycharm链接数据库
第一步:
首先,我们找到Pycharm左下角的Database点进去
第二步:
点击小加号,选择Mysql,点进去
第三步:
注意页面左下方是否有橙色感叹号,如果有点一下下载
第四步:
其他的看着填,然后要选一下库名字,这个一次只能链接一个库,都做好了点一下左下角TEST,如果打绿色勾,点OK即可
第五步:
简单使用
六、Django链接数据库***
去改Settings里的DATABASES
# 注意 如果改了后,可能报错
django1.11 版本需要在项目或者应用目录下的__init__.py中编写一行代码
import pymysql
pymysql.install_as_MySQLdb()
django2.2 以上版本需要使用mysqlclient模块,去pip下一下即可
# 把默认的改为这个!!!
# django默认使用的是sqlite3 但是这款数据库 一般用于本地测试 功能很少,所以要改为mysql,这个会自动提示
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'day51', # 库的名字
'HOST': '127.0.0.1', # 剩下就是自己的mysql的信息
'PORT': 3306,
'USER': 'root',
'PASSWORD': 密码,
'CHARSET': 'utf8'
}
}
七、ORM*******
1.介绍:
对象关系映射
能让不会sql语句的python程序员,使用面向对象的语法来操作数据库
极大的提高了开发效率
ORM由于高度封装了SQL,有时候效率低,需要自行写SQL
2.基本使用
1.先在models.py中编写模型类
class GirlsInfo(models.Model): # 必须要继承models.Model哦
# id int primary key auto_increment
# 字段名 = 字段类型 + 约束条件
id = models.AutoField(primary_key=True)
# name varchar(32)
name = models.CharField(max_length=32)
# age int
age = models.IntegerField()
2.执行数据库迁移相关命令
python38 manage.py makemigrations 将操作记录到小本本上(migrations)
python38 manage.py migrate 将操作同步到数据库上
from app01 import models
models.类名.objects.create()
models.类名.objects.filter()
models.类名.objects.filter().update()
models.类名.objects.filter().delete()
# 1.创建数据
models.GirlsInfo.objects.create(name=name,age=pwd)
# 2.查询数据
res = models.GirlsInfo.objects.filter(name=name)
print(res) # [数据对象,] queryset
print(res[0])
print(res[0].id)
print(res[0].name)
print(res[0].age)
# 3.修改数据
models.GirlsInfo.objects.filter(id=1).update(name='jason',age=123)
# 4.删除数据
models.GirlsInfo.objects.filter(id=1).delete()
django 模型models 常用字段
1、models.AutoField
自增列 = int(11)
如果没有的话,默认会生成一个名称为 id 的列
如果要显式的自定义一个自增列,必须设置primary_key=True。
2、models.CharField
字符串字段
必须设置max_length参数
3、models.BooleanField
布尔类型=tinyint(1)
不能为空,可添加Blank=True
4、models.ComaSeparatedIntegerField
用逗号分割的数字=varchar
继承CharField,所以必须 max_lenght 参数
5、models.DateField
日期类型 date
DateField.auto_now:保存时自动设置该字段为现在日期,最后修改日期
DateField.auto_now_add:当该对象第一次被创建是自动设置该字段为现在日期,创建日期。
6、models.DateTimeField
日期时间类型 datetime
同DateField的参数
7、models.Decimal
十进制小数类型 = decimal
DecimalField.max_digits:数字中允许的最大位数
DecimalField.decimal_places:存储的十进制位数
8、models.EmailField
一个带有检查 Email 合法性的 CharField
9、models.FloatField
浮点类型 = double
10、models.IntegerField
整形
今日其他小知识补充:
- 更改浏览器页面缓存服务
浏览器页面内右键检查——设置小齿轮——勾上停用缓存(开发工具打开时)