Django 静态文件 request对象方法 pycharm和Django连接MySQL Django模型层初步了解 基本的ORM操作
目录
静态文件
一、概念
- 静态文件:不经常变化的文件,主要针对html文件所使用到的各种资源。
-
例如:css文件、js文件、img文件、第三方框架文件
ps: Django针对静态文件资源需要单独在根目录创建一个static目录统一存放,该目录下的文件类型还有很多,例如:utils目录,plugins目录,libs目录等
- 资源访问:我们的浏览器地址栏之所以可以使用路由获取到相应的资源是因为程序员提前开设了资源的接口。
- 静态文件资源访问:默认情况下无法访问,因为我们没有提前开设静态文件资源的访问接口。
二、静态文件的相关配置
-
先把提前下载好的第三方前端框架cv到static目录下
-
在settings.py文件的最下面找到STATIC_URL = '/static/',在其下面加上STATICFILES_DIRS存储静态文件资源的目录名称
-
接口前缀
STATIC_URL = '/xxx/' # 访问静态文件资源的接口前缀(通行证)
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static'), # 存储静态文件资源的目录名称
os.path.join(BASE_DIR, 'static1'), # 存储静态文件资源的目录名称
os.path.join(BASE_DIR, 'static2'), # 存储静态文件资源的目录名称
]
'''
接口前缀正确之后 会拿着后面的路径依次去到列表中自上而下查找 一旦找到就返回
'''
- 接口前缀的动态匹配
在HTML文件中:
{% load static %}
<script src="{% static 'jquery.min.js' %}"></script>
<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>
- 在浏览器的地址栏就可以获取静态文件的资源
form表单
一、基本属性
- action属性: 控制数据提交的地址
-
1.action="" 数据默认提交给当前页面所在的地址
-
2.action="https://www.baidu.com/" 完整地址
-
3.action="/index/" 朝当前服务端的index地址提交
- method属性: 控制数据提交的方法
-
默认是 get
-
可以改 post method="post"
- enctype属性:enctype就是encodetype就是编码类型的意思。multipart/form-data是指表单数据中由多部分构成,既有文本数据,又有文件等二进制数据。
-
默认是 enctype="application/x-www-form-urlencoded"
-
可以改 enctype="multipart/form-data"
PS:默认情况下,enctype的值是application/x-www-form-urlencoded,不能用于文件上传,只有使用了multipart/form-data,才能完整的传递文件数据。
二、get和post区别
- 功能不同
1、get是从服务器上获取数据。
2、post是向服务器传送数据。
- 过程不zhi同
1、get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。
2、post是通过HTTP post机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址。用户看不到这个过程。
- 获取值不同
1、对于get方式,服务器端用Request.QueryString获取变量的值。
2、对于post方式,服务器端用Request.Form获取提交的数据。
- 传送数据量不同
1、get传送的数据量较小,不能大于2KB。
2、post传送的数据量较大,一般被默认为不受限制。但理论上,IIS4中最大量为80KB,IIS5中为100KB。
- 安全性不同
1、get安全性非常低。
2、post安全性较高。
三、前期如果要发送post请求需要主要要去配置文件注释一行CSRF的代码行
request对象
- 方法的基本使用
- request.method 获取请求方式 结果是纯大写的字符串数据GET\POST
- request.POST 获取post请求请求体里面携带的数据
- request.POST.get() 获取列表最后一个数据值
- request.POST.getlist() 获取整个列表数据
- request.GET 获取网址问号后面携带的数据
- request.GET.get() 获取列表最后一个数据值
- request.GET.getlist() 获取整个列表数据
- 在视图函数中针对不同的请求代码编写套路
if request.method == 'POST':
return HttpResponse()
return HttpResponse()
四、pycharm和Django连接MySQL
一、pycharm连接MySQL
- 首先找到MySQL
- 然后输入相关数据连接即可
PS: 在第一次连接需要手动下载驱动,在连接之前最好先测试一下是否可以连接成功
二、Django连接MySQL
- sqllite3:django自带的sqlite3是一个小型的数据库 功能比较少 主要用于本地测试,所以我们实际项目中都会替换掉它
- 默认配置sqlite3
- 修改配置文件 (无需将上面默认的删除,注释修改即可)
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'day51',
'HOST': '127.0.0.1',
'PORT': 3306,
'USER': 'root',
'PASSWORD': '123',
'CHARSET': 'utf8'
}
}
- 需要指定模块
- django1.X版本需要在项目目录下或者app目录下的__init__.py编写代码
import pymysql
pymysql.install_as_MySQLdb()
- django2.X及以上都可以直接通过下载mysqlclient模块解决
pip3.8 install mysqlclient
ps:该模块windows下载问题不大 主要是mac电脑可能有问题
ORM
一、ORM简介
-
ORM:对象关系映射,能够让不会SQL语句的python程序员 使用python面向对象的语法来操作数据库。
-
类 表
-
对象 一条条数据
-
对象点名字 数据获取字段对应的值
PS:ORM由于高度封装了SQL 所以有时候效率较低 我们需要自己写SQL
- ORM基本操作
- 首先在models.py中编写模型类
class UserInfo(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()
# password varchar(32)
password = models.CharField(max_length=64)
- 执行数据库迁移相关命令
-
python38 manage.py makemigrations 将操作记录到小本本上(migrations)
-
python38 manage.py migrate 将操作同步到数据库上
-
可以看见数据库已经被建好
** PS: 注意每次在models.py修改了与数据库相关的代码 都需要再次执行上述命令**
注:前期不熟悉,建议写完整的语法,后期熟练可以偷懒
- ORM初识基本语句(后面还会有详细)
- 主要在views写功能的时候使用,注意要先导入models文件
from app01 import models
models.类名.objects.create() # 增
models.类名.objects.filter() # 查
models.类名.objects.update() # 改
models.类名.objects.delete() # 删