静态文件配置
1.静态文件
写好之后不会自动动态改变的文件资源,比如写好的css文件、js文件、图片文件、第三方框架文件
默认将所有的静态文件都放在一个static文件夹内
在django目录下创建该文件夹
static
css
js
img
第三方文件资源
# 在加载静态资源的没有开设对应的访问接口
2.配置
settings.py配置文件
# 静态文件配置
STATICFILES_DIRS = [
os.path.join(BASE_DIR,'static')
]
<script src="/static/bootstrap-3.4.1-dist/js/bootstrap.min.js"></script>
3.进阶操作
STATIC_URL = '/static/' # 接口前缀
'''
如果想要访问静态文件资源,那么必须以static开头
书写了接口前缀之后 就拥有了以下列表中所有文件夹内部资源的权限
'''
# 静态文件配置
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.4.1-dist/css/bootstrap.min.css' %}">
<script src="{% static 'bootstrap-3.4.1-dist/js/bootstrap.min.js' %}"></script>
# 加了上述代码 修改接口前缀会自动更改
request对象方法
1.form表单
form表单默认使用的是get请求
action
控制后端提交的路径
1.不写:默认朝当前页面地址提交数据
2.后缀:/index/
3.全写:https://www.baidu.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': 'db06', # 一定要事先创建好才能指定
'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:对象关系映射
'''
类 >>> 表
对象 >>> 表里面的数据
对象点属性 >>> 字段对应的值
# 缺陷: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文件夹
python manage.py makemigrations
简写:makemigrations
2.真正的执行数据库迁移操作
python manage.py migrate
简写:migrate
# 只要动了models.py中跟数据库相关的代码就必须重新执行上述两条命令
******************************************************
3.针对主键字段
class User1(models.Model):
# 如果不指定组件 那么orm会自动帮你创建一个名为id的主键字段
# 如果想让主键字段不叫id 需要自己手动指定
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]
# 4.修改数据
# update user set name=username and pwd=password where id=edit_id;
models.User.objects.filter(id=edit_id).update(name=username,pwd=password)
edit_obj.name=username
edit_obj.pwd=password
edit_obj.save()
# 5.删除数据
# delete from user where id=delete_id
models.User.objects.filter(id=delete_id).delete()