静态配置、request对象方法,pycharm连接mysql,django连接mysql,django ORM

静态文件配置

1.编写一个用户登录页面
2.静态文件
	不怎么经常变化的文件 主要针对html文件所使用到的各种资源:css文件、js文件、img文件、第三方框架文件
	django针对静态文件资源需要单独开设一个目录统一存放
		该目录下如果各种类型的文件都很多,还可以继续创建目录
			css目录
			js目录
			img目录
			utils目录/plugins目录/libs目录/others目录/不创建目录
3.资源访问
	我们在地址栏中之所以可以输入路由获取到相应的资源是因为程序员提前开设了资源的接口
4.静态文件资源访问
	默认情况下无法访问 因为我们没有提前开设静态文件资源的访问接口

静态文件相关配置

#静态文件路径路径
STATICFILES_DIRS = [
    os.path.join(BASE_DIR,'static'),
]

1.接口前缀
STATIC_URL = '/static/'  #访问静态文件资源的接口前缀(通行证)
STATICFILES_DIRS = [
    os.path.join(BASE_DIR,'static'),  #存储静态文件资源的目录名称
]
"""
接口前缀正确之后 会拿着后面的路径依次去到列表自上而下查找,一旦找到就返回
"""

2.接口前缀动态匹配(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>

ps:settings.py里面的STATIC_URL无论怎么变,html里面的内容都会自动匹配,无需手工批量修改html等文件。

为避免测试浏览器有缓存,建议打开浏览器开发者工具,点击设置,选择Network——Disable cache(while DevTool is open)
image

form表单

action  控制数据提交的地址(三种编写方式,如下)
	1.action=""  数据默认提交给当前页面所在的地址
	2.action="https://www.baidu.com"  完整地址
	3.action="/index/"  朝当前服务端的index地址提交
	
method	控制数据提交的方法
默认是get,可以改成post等
请求方法补充
get
	朝服务端索要数据 也可以携带一些额外的要求
	携带额外数据的方式: URL?xxx=yyy&uuu=zzz
	问号后面携带数据的大小是有限制(2KB)的并且不能携带敏感数据(手机号,密码等)
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表单

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初次连接数据库 需要下载对应的驱动

image
image

django连接数据库

django自带的sqlite3是一个小型的数据库 功能比较少 主要用于本地测试,我们实际项目中都会替换掉它
settings.py默认配置sqlite3
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}

1.修改配置文件
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'day51',
        'HOST':'127.0.0.1',
        'PORT':3306,
        'USER':'root',
        'PASSWORD':'Abcd1234',
        'CHARSET':'utf8',
    }
}
2.需要指定模块
	django1.x版本需要在项目目录下或者app目录下的__init__.py编写代码
	import pymysql
	pymysql.install_as_MySQLdb()
	django2.x及以上都可以直接通过下载mysqlclient模块解决
		pip3.8 install mysqlclient
	ps:该模块windows下下载问题不大 主要是mac电脑可能有问题,注意代理问题

ORM简介

ORM:对象关系映射
	能够让不会SQL语句的python程序员 使用python面向对象的语法来操作数据库
类		   	 表
对象			一条条数据
对象点名字	  数据获取字段对应的值

ORM由于高度封装了SQL 所以有时候效率较低 我们需要自己写SQL
ORM属于django模型层

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修改了与数据库相关的代码 都需要执行上述两条命令
"""

image

ORM基本语句(重要,理解QuerySet)

增查改删
from app01 import models
models.类名.objects.create()
models.类名.objects.filter()
models.类名.objects.update()
models.类名.objects.delete()

简单代码(通过浏览器访问增加用户):
#1.创建数据
models.GirlsInfo.objects.create(name=name,age=pwd)
#2.查询数据
res = models.GirlsInfo.objects.filter(name=name)
# print(res)  #[数据对象] <QuerySet [<GirlsInfo: GirlsInfo object (2)>]> 
# 拿到的是列表套数据对象,res[0]是因为只有一条数据
print(res[0])   # GirlsInfo object (2)
print(res[0].id)  # 2
print(res[0].name)  # jason
print(res[0].age)  # 22
#3.修改数据
models.GirlsInfo.objects.filter(id=1).update(name='her',age=29)
#4.删除数据
models.GirlsInfo.objects.filter(id=1).delete()
posted @ 2022-12-09 16:27  悠悠-winter  阅读(67)  评论(0)    收藏  举报