02
主题:登录功能
-
静态文件配置
-
request对象方法
-
pycharm如何链接MySQL
-
django如何链接MySQL
-
django orm简介(重点)
-
数据的CURD
今日内容详细
静态文件配置
"""
我们之所以能够在浏览器地址栏里面输入网址就可以拿到对应的资源
是因为开发者早已经提前开设了该资源的访问接口
"""
1.静态文件
写好之后不会自动动态改变的文件资源,比如我们写好的css文件、js文件、图片文件、第三方框架文件
我们默认将所有的静态文件都放在一个static文件夹内
我们需要自己在django目录下创建该文件夹
static目录下基本还会再分几个文件夹
static
css
js
img
第三方文件资源
# 在加在静态资源的时候没有开设对应的访问接口
2.配置
settings.py配置文件
# 静态文件配置
STATICFILES_DIRS = [
os.path.join(BASE_DIR,'static')
]
<script src="/static/bootstrap-3.3.7-dist/js/bootstrap.min.js"></script>
3.进阶操作
STATIC_URL = '/static/' # 接口前缀
"""
如果你想要访问静态文件资源,那么必须以static开头
<script src="/static/bootstrap-3.3.7-dist/js/bootstrap.min.js"></script>
你书写了接口前缀之后 就拥有了访问下列列表中所有文件夹内部资源的权限
"""
# 静态文件配置
STATICFILES_DIRS = [
os.path.join(BASE_DIR,'static'),
os.path.join(BASE_DIR,'static1'),
os.path.join(BASE_DIR,'static2'),
]
4.动态解析
{% load static %}
<link rel="stylesheet" href="{% static 'bootstrap-3.3.7-dist/css/bootstrap.min.css' %}">
<script src="{% static 'bootstrap-3.3.7-dist/js/bootstrap.min.js' %}"></script>
request对象方法
1.form表单回顾
form表单默认使用的是get请求
action
控制后端提交的路径
1.不写:默认朝当前页面地址提交数据
2.后缀:/index/
3.全写:https://www.mzitu.com
method
get
post
2.request对象方法
request.method
获取当前请求的请求方法并且结果是一个纯大写的字符串类型
request.POST # 直接看成是字典即可
获取用户提交post请求过来的基本数据(不包含文件)
get() # 获取列表最后一个元素
getlist() # 获取整个列表
request.GET # 直接看成是字典即可
获取url问好后面的数据
get() # 获取列表最后一个元素
getlist() # 获取整个列表
request.FILES # 直接看成是字典即可
获取用户上传的文件数据
'''form表单如果需要携带文件数据 那么要添加参数
<form action="" method="post" enctype="multipart/form-data">
'''
get() # 获取列表最后一个元素
getlist() # 获取整个列表
"""
视图函数书写格式
def login(request):
if request.method == 'POST':
return HttpResponse("我很气愤")
return render(request,'login.html')
"""
pycharm链接数据库
DataBase工具栏
下载对应的驱动即可
django链接MySQL
"""django默认使用自带的sqlite3"""
1.配置文件修改配置
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'db666', # 一定要事先创建好才能指定
'HOST':'127.0.0.1',
'PORT':3306,
'USER':'root',
'PASSWORD':'123',
'CHARSET':'utf8'
}
}
2.在项目文件夹或者应用文件夹内的__init__.py文件中书写固定的代码
import pymysql
pymysql.install_as_MySQLdb()
django orm简介
"""
orm:对象关系映射
"""
orm目的就是为了能够让不懂SQL语句的人通过python面向对象的知识点也能够轻松自如的操作数据库
类 >>> 表
对象 >>> 表里面的数据
对象点属性 >>> 字段对应的值
# 缺陷:sql封装死了 有时候查询速度很慢
orm实操
1.我们的模型类需要写在应用下的models.py文件中
class User(models.Model):
# id int primary key auto_increment
id = models.AutoField(primary_key=True)
# name varchar(32)
name = models.CharField(max_length=32) # CharField必须要加max_length参数
# age int
age = models.IntegerField()
****************************************************************************
2.数据库迁移命令
1.将数据库修改操作先记录到小本本上(对应应用下的migrations文件夹)
python3 manage.py makemigrations
2.真正的执行数据库迁移操作
python3 manage.py migrate
# 只要动了models.py中跟数据库相关的代码就必须重新执行上述两条命令
****************************************************************************
3.针对主键字段
class User1(models.Model):
# 如果你不指定主键 那么orm会自动帮你创建一个名为id的主键字段
# 如果你想让主键字段名不叫id 叫uid、sid、pid等则需要自己手动指定
username = models.CharField(max_length=32)
字段的增删改查
# 增
pwd = models.IntegerField('密码',null=True) # 该字段可以为空
is_delete = models.IntegerField(default=0) # 默认值
# 改
直接改代码然后执行数据库迁移命令即可
# 删
注释掉代码然后执行数据库迁移命令即可
数据的增删改查
# 1.查询数据
# select * from user where name=username;
user_obj = models.User.objects.filter(name=username).first()
# 2.添加数据
# insert into user(name,pwd) values(username,password);
models.User.objects.create(name=username,pwd=password)
# 3.查询所有的数据
# select * from user;
models.User.objects.all() # [obj1,obj2,obj3,obj4]
# 4.修改数据
models.User.objects.filter(id=edit_id).update(name=username,pwd=password)
edit_obj.name = username
edit_obj.pwd = password
edit_obj.save()
# 5.删除数据
models.User.objects.filter(id=delete_id).delete()
补充
1.针对浏览器缓存我们可以认为的限制不适用缓存