django配置
- 由终端命令创建的django项目,初始没有templates文件夹,需自己新建该文件夹,并在settings里配置
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'templates')]
,
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
- django静态文件配置
STATIC_URL = '/static/'
# 静态文件配置
STATICFILES_DIRS = [
os.path.join(BASE_DIR,'static')
]
# 暴露给外界能够访问服务器静态文件夹下面所有的资源
STATIC_URL = '/xxx/' # 接口前缀 跟你的静态文件夹的名字一点关系都没有
# 默认情况下这个前缀跟静态文件夹名字一样!!!
# 静态文件配置
STATICFILES_DIRS = [
os.path.join(BASE_DIR,'static'), # 就是你的静态文件夹路径
os.path.join(BASE_DIR,'static1'),
os.path.join(BASE_DIR,'static2')
]
# ps:会依次查找列表中所有的静态文件路径 找到的话立刻停止,都没有找到返回404
- django连接数据库
1、需要修改配置文件
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': '库名',
'HOST':'127.0.0.1',
'PORT':3306,
'USER':'root',
'PASSWORD':'密码'
}
}
ps:键必须都是大写
2、告诉django用pymysql替换它默认mysqldb模块连接数据库
方式1:在你的项目文件夹下面的__init__.py
方式2:也可以在你的应用文件夹下面的__init__.py
# 固定写法
import pymysql
pymysql.install_as_MySQLdb() # 告诉django用pymysql代替mysqldb连接数据库
基本操作
- form表单触发提交数据的动作两种方式
<input type="submit" value="确认">
<button>确认</button>
- form控制提交的地址及方式
# action属性控制提交的地址:
1.全路径
<form action="http://127.0.0.1:8000/login/">
2.只写路径后缀
<form action="/login/">
3.不写 (默认往当前路径提交)
# method属性控制提交的方式
form表单默认是get请求,也可设置为post请求
修改方式:<form action='' method='post'>
- 后端获取前端请求方式
request.method
- 后端获取get请求提交的数据
request.GET 携带了前端所有get请求的数据,数据格式为:{key1:[],key2:[]}
username = request.GET.get('username')
password = request.GET.get('password')
取值遵循字典取值 注意虽然它的value是列表但是你取的时候默认取列表最后一个元素
如果想获取列表里面所有的参数需要用:getlist()
- 后端获取post请求提交的数据(同上)
request.POST 携带了前端所有get请求的数据
username = request.POST.get('username')
password = request.POST.get('password')
取值遵循字典取值 注意虽然它的value是列表但是你取的时候默认取列表最后一个元素
如果想获取列表里面所有的参数需要用:
getlist() 应用场景 checkbox 多选的select框
- 数据库迁移命令(只要修改了模型层中跟表有关的数据就要执行下面的命令)
python manage.py makemigrations 这一句命令只是记录一下数据库更改记录
python manage.py migrate 真正去操作数据库
- 新增数据
# 方式1:
user_obj = models.User.objects.create(name=username,password=password)
# 方式2:
user_obj = models.User(name=username,password=password)
user_obj.save() # 对象调用save方法保存到数据库
- 查询数据
user_list = models.User.objects.all() # 获取user表所有的数据(得到queryset对象)
# 只要是QuerySet就可以点query查看获取到当前QuerySet对象的内部sql语句
print(user_list.query)
user_query = models.User.objects.filter(id=edit_id).first() # 如果你是要获取数据对象first千万别忘了
# filter当条件不存在的情况下会返回一个空的queryset对象
<QuerySet []> <class 'django.db.models.query.QuerySet'>
user_obj = models.User.objects.get(id=edit_id) # 用get可以直接获取到数据对象本身但是查询条件不存在的情况下直接报错
- 删除数据
models.User.objects.filter(id=1).delete() # 会将queryset所有的数据对象全部删除
注意:queryset对象点修改 删除 会作用于对象内部所有的数据对象 类似于批量操作