Django框架:2、静态文件配置、form表单、request对象、pycharm链接数据库、django链接数据库、ORM框架
目录Django框架
-
在HTML文档中引入静态文件还有另一种更加方便的方式 - 动态解析令牌,令牌指的就是
STATIC_URL的值,其实静态文件的目录名称可以是随意的,并且令牌的值也可以是任意的,但是约定俗称就是static,如果改了令牌名称,按照上述前端HTML引入静态文件的方式就需要更改路径,如果静态文件非常多改起来会是一件非常闹心的事情,而动态令牌解析可以解决这一问题,无论令牌名称怎么改,前端HTML页面中引入静态文件的方式都不变,代码如下:Title {% load static %}``以上《静态文件配置》转载-知乎:「程序媛小庄」https://zhuanlan.zhihu.com/p/397511053
二、form表单
? form表单是HTML超本本编辑语言中的一种标签的,基于form表单可以获取到前端用户输入的数据
1、action属性
? 控制用户输入数据提交的地址
- action=""
- 数据默认提交给当前页面所在的地址
- action="https:/www.baidu.com/"
- 完整地址
- action="/index/"
- 向当前服务端的index地址提交
2、method属性
? 控制数据提交的方式
-
method="GET"
- 携带额外数据的方式:URL?xxx=yyy$aaa=bbb....
- 默认方法,使用 GET 时,表单数据在页面地址栏中是可见的,适合提交非敏感数据和少量数据,浏览器会设定容量限制(2KB)。
-
method="POST"
- 携带额外数据的方式:请求体内
- 安全性高,提交的数据是不可见的,适合提交敏感类数据(例如密码),数据没有大小限制。
前期发送POST请求需要注释掉配置文件中的某一行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', ]三、request对象
? 上面说到通过< form >表单可以获取到用户提交的数据,通过request对象可以更加便捷的处理这些数据,准确来说:
? 收集客户端的Form、Cookies、超链接,或者收集服务器端的环境变量。request对象是从客户端向服务器发出请求,包括用户提交的信息以及客户端的一些信息。客户端可通过HTML表单或在网页地址后面提供参数的方法提交数据,然后服务器通过request对象的相关方法来获取这些数据。
1、基本用法
用法 描述 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链接数据库
1、打开PyCharm,在右上角/左下角的侧边栏点开Database。
2、按图操作,首次链接数据库需要下载,等待进度条安装完成即可,填写完成后可点击测试,通过后会出现绿色对勾
五、Django链接数据库
? django自带的sqlite3是一个小型的数据库,功能比较少,主要用于本地测试
我们实际项目中都会替换掉它
1、配置修改
替换默认配置? 配置文件中,所有变量名均要为大写,否则Django不会对其进行识别
默认配置sqlite3 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), } } 1.修改配置文件 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', # 最后一个参数改为mysql 'NAME': 'user_info', # 库的名字 'HOST': '127.0.0.1', # 库的IP 'PORT': 3306, # 库的端口号 'USER': 'root', # 管理员名 'PASSWORD': '123', # 管理员密码 'CHARSET': 'utf8' # 配置字符编码 } }2、指定模块
Django1.X版本
django1.X版本需要在项目目录下或者app目录下的__init__.py编写代码 import pymysql pymysql.install_as_MySQLdb()Django2.X及以上版本
django2.X及以上都可以直接通过下载mysqlclient模块解决 cmd命令窗口下载: pip3.8 install mysqlclient ps:该模块windows下载问题不大 主要是mac电脑可能有问题六、ORM框架
1、ORM简介
? ORM:对象关系映射
? 能够让不会SQL语句的python程序员,使用python面向对象的语法来操作数据库? ORM由于高度封装了SQL 所以有时候效率较低 我们需要自己写SQL
名称 对应关系 类 表 对象 数据 对象.名字 数据获取对应字段的值 2、ORM基本操作
1.先在models.py中编写模型类 class GirlsInfo(models.Model): # 字段名 = 字段类型 + 约束条件 id = models.AutoField(primary_key=True) name = models.CharField(max_length=32) age = models.IntegerField() 2.执行数据库迁移相关命令 python38 manage.py makemigrations 将操作记录到小本本上(migrations) python38 manage.py migrate 将操作同步到数据库上 '''注意每次在models.py修改了与数据库相关的代码 都需要再次执行上述命令'''3、ORM基本语句
1.models.类名.objects.create() # 创建数据 2.models.类名.object.filter() # 查询数据 3.models.类名.object.update() # 更新数据 4.models.类名.object.delete() # 删除数据 - action=""