文章目录
Django配置及ORM
一、静态文件配置
django在配置(settings)文件中给你提示了配置文件的配置信息,你只需要按照固定的语法格式书写即可提示对应的静态文件的资源
基本配置
settings下
STATIC_URL = ‘/static/’ 访问后端静态资源的接口前缀,默认情况下接口前缀名与静态文件名保持一致
HTML文件下
- 你想要访问后端的静态资源,必须以接口前缀开头,后面跟上具体的文件路径,才能访问到对应的资源。
<link rel="stylesheet" href="/xxx(前缀名)/bootstrap-3.3.7-dist/css/bootstrap.min.css">
- 当你的接口前缀正确之后,会拿着后面的路径依次去下面列表中的每一个文件夹下查找的资源,顺序是从上往下依次查找,如果都没有找到才会报错。
STATICFILES_DIRS = [
os.path.join(BASE_DIR,'static'), # 这里的static才是你文件夹的路径
os.path.join(BASE_DIR,'static1'),
os.path.join(BASE_DIR,'static2'),
]
templates文件下
HTML文件解决上面动态绑定的问题
==记得先导入bootstrap的文件==
{% load static %}
<link rel="stylesheet" href="{% static 'bootstrap-3.3.7-dist/css/bootstrap.min.css' %}"> #bootstrap的css文件路径
<script src="{% static 'bootstrap-3.3.7-dist/js/bootstrap.min.js' %}"></script>#bootstrap的js文件路径
二、form表单
form表单默认是以get请求提交数据的
http://127.0.0.1:8000/login/?username=admin&password=123
#get请求直接显示用户提交的信息
action
- 不写,默认朝当前的地址提交数据
- 全路径
- 后缀(/index)
提交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',
]
视图函数应该做到针对不同的请求,做出不同的处理逻辑
eg:
- get请求来,应该只需要返回一个HTML文件
- post请求来,应该获取用户提交的数据,然后做进一步的处理
你必须要能够判断出当前请求到底是什么请求
三、request对象方法
获取前端请求方式(get/post)
-
request.method 结果是一个纯大写的字符串,GET/POST
-
request.POST 获取post请求提交的数据,类似于是一个大字典
# <QueryDict: {'username': ['admin', 'jason'], 'password': ['123']}> request.POST.get() # 只会取列表最后一个元素 request.POST.getlist() # 取出整个列表
-
request.GET 获取符合GET请求携带数据格式的数据,url?xxx=yyy&zzz=111
# <QueryDict: {'username': ['admin', 'jason'], 'password': ['123']}> request.GET.get() # 只会取列表最后一个元素 request.GET.getlist() # 取出整个列表
通常情况下针对不同的请求应该做不同的处理,而一般情况下GET请求次数远远多于POST请求,所以我们应该针对非GET请求做出逻辑判断,将get请求直接写在函数体内而不是做判断.
def login(request):
要给用户返回一个登陆页面
print('我被触发了')
获取前端请求方式
if request.method == 'GET':
# get逻辑
return render(request, 'login.html')
elif request.method == 'POST':
# post逻辑
# print(request.method,type(request.method)) # GET <class 'str'> POST <class 'str'>
# 获取数据 之后...
return HttpResponse('收到了你的数据 马上处理')
"""为了减少代码的层级:一般情况下视图函数处理get请求较多 所以可以直接再函数体内先写get请求对应的逻辑
将其他请求利用request.method做出区分
"""
if request.method == 'POST':
return HttpResponse('收到了')
return render(request,'login.html')
四、Django连接MySQL数据库
连接数据库需要提前创建好对应的库
-
先去配置文件中配置相关参数
DATABASES = { 'default':{ 'ENDINE':'django.db.backends.mysql', 'NMAE':'库名', 'HOST':3306, 'USER':'root', 'PASSWORD':'123', 'CHARSET':'utf8' } }
-
在项目名或者应用名下面的——init——文件中告诉django使用pymysql链接数据库而不是默认的mysqldb
import pymysql pymysql.install_as_MySQLdb()
五、Django orm简介
手动创建自己的库名后,django能自动帮你创建表
orm对象关系映射
类---->表
对象---->记录
属性---->字段值
作用:能够让一个不会数据库操作的人也能够通过python面向对象语法,句点符来简单快捷的操作数据.
操作增删改查之前,需要去对应的models.py文件中书写你的模型类
class User(models.Model):
id = models.AutoField(primary_key=True)
name = models.CharField(max_length=32)
password = models.IntegerField()
数据库迁移(同步)命令
1. python3 manage.py makemigrations #仅仅是将你对数据库的改动记录到某个地方(migrations文件夹)
2. python3 manage.py migrate #将改动真正的同步到数据库中
上面两个命令永远是成对出现的,只要执行了1,就必须执行2才会真正的将数据同步到数据库
字段的增删改查
-
字段的增
- 要么给该字段设置默认值
- 要么运行该字段可以为空
-
字段的改
修改models代码,之后执行数据库迁移命令即可.
-
字段的删
只要注释掉对应的字段即可,执行数据库迁移命令就会将对应的字段及数据信息全部删除(数据库的删除慎用)
数据的增删改查
-
查
-
filter()
from app(功能应用) import models res = models.User.objects.filter(username='redwei') #select *from user where username='redwei' #返回的结果是一个列表,支持索引取值但是不支持负数索引,并且不推荐使用索引,推荐使用它给你封装好的方法 user_obj = res.firse() #filter方法查找,条件不存在的时候,不会报错,返回的是一个空列表 ''' filter括号内直接放多个关键字参数,并且多个关键字参数之间是and关系 res = models.User.objects.filter(username='redwei',password='123') #select *from user where username='redwei' and password='123'; '''
-
查所有的数据
1. filter() #括号内不写条件拿所有 2. all() #查询所有数据 #二者查询结果都是这样的 <QuerySet [<User: jason>, <User: egon>, <User: sean>, <User: admin>, <User: 你不行>]>
-
-
增
-
create()
user_obj = models.User.objects.create(name=username,password=password) #该方法有返回值,返回值就是当前被创建的对象本身
-
对象的绑定方法
1.先生成一个user对象 user_obj = models.user(name=username,password=passowrd) 2.调用对象的绑定方法 user_obj.save()
-
-
删
根据用户点击的对应数据进行删除(HTML文件需要绑定唯一关系)
获取数据的唯一id delete_id= request.GET.get('user_id') models.user.objects.filter(id=delete_id).delete() #将filter过滤出来的数据全部删除
-
改
根据数据id获取数据并且展示到前端页面功用户查看修改
方式一(推荐) edit_id= request.GET.get('user_id') models.user.object.filter(id=edit_id).update(name=username,password=password) 方式二(了解) 1. 先获取数据对象 edit_obj = models.user.objects.filter(id=edit_id).first() 2. 在修改对象属性 edit_obj.name = username 3.调用对象的绑定方法保存 edit_obj.save()