Django
语法
设置项目
django-admin startproject
运行
python3 manage.py runserver 127.0.0.1:8010
添加模块
python3 manage.py startapp app名字
模型设置
python3 manage.py makemigrations (更改命令)
python3 manage.py migrate (更新表结构)
- 生成requirements.txt文件
pip3 freeze > requirements.txt - 安装requirements.txt依赖
pip install -r requirements.txt
模型语法
setting 文件
DATABASES = {
‘default’: {
# ‘ENGINE’: ‘django.db.backends.sqlite3’,
# ‘NAME’: os.path.join(BASE_DIR, ‘db.sqlite3’),
‘ENGINE’: ‘django.db.backends.mysql’,
‘NAME’: ‘数据库名称’,
‘USER’: ‘root’,
‘PASSWORD’: ‘密码’,
‘HOST’: ‘127.0.0.1’,
‘PORT’: ‘3306’,
# show variables like ‘character_set_database’;
# 修改字段字符编码
# alter table spiders_weibo modify text longtext charset utf8mb4 collate utf8mb4_unicode_ci;
‘OPTIONS’: {‘charset’: ‘utf8mb4’},
}
}
模型 数据库语法
models.DateTimeField(日期)
auto_now = False #默认设置
,auto_now_add = True #默认添加
models.CharField (字符大小)
max_length=100, 最大字符
default=“" 设置默认值
blank=True
null=True 设置可为空
models.TextField (长字符串)
设置表名
class Meta:
db_table = ‘表名’
模型 数据库操作
from mysqls.acdModel.models import ProcExpert 引入models处理数据库
from django.db.models import Q
from django.core import serializers 序列化
单独查询
ProcExpert.objects.get(条件)
查询符合数据的
ProcExpert.objects.filter(Q(hiden=1) & Q(dels=1))
查询全部
ProcExpert.objects.all()
增加
pe = ProcExpert()
pe.data = 1,
pe.save()
修改
pe = ProcExpert.objects.get(vid=vid)
pe.data = 1,
pe.save()
删除
pe = ProcExpert.objects.get(id=1)
pe.delete()
查询计数
ProcExpert.objects.all().count()
模糊化查询
__contains
比较大小
__lte 小于
__gt 大于
序列化
serializers.serialize(“json”, ProcExpert.objects.filter(Q(hiden=1) & Q(dels=1)))
序列化查询出来的数据 后期处理为
lists = json.loads(data)
datak = []
for item in lists:
datak.append(item[‘fields’])
datak 为序列化处理后的数据
数据库判断为 try: except:
try:
serializers.serialize(“json”, wikiMo.objects.filter(dels=1))
except:
http请求
request
.method 判断请求类型
.body post传送数据data
.GET[‘元素’] 获取url上的元素
.headers[‘元素’] 获取请求头中的元素
返回数据
from django.http import HttpResponse
return HttpResponse(json.dumps(loginRe), content_type=“application/json”)
返回数据
cors
引用cors django-cors-headers
ajax请求会触发两次 第一次请求为OPTIONS 第二次请求才为请求
INSTALLED_APPS = [
···
‘corsheaders’,
···]
MIDDLEWARE=[
···
‘corsheaders.middleware.CorsMiddleware’,
# ‘django.middleware.csrf.CsrfViewMiddleware’, 关闭禁止post传值
···]
CORS_ORIGIN_ALLOW_ALL = True
CORS_ALLOW_CREDENTIALS = True
#设置请求类型
CORS_ALLOW_METHODS = (
‘DELETE’,
‘GET’,
‘OPTIONS’,
‘PATCH’,
‘POST’,
‘PUT’,
‘VIEW’,
)
设置接收请求头
CORS_ALLOW_HEADERS = (
‘XMLHttpRequest’,
‘X_FILENAME’,
‘accept-encoding’,
‘authorization’,
‘content-type’,
‘dnt’,
‘origin’,
‘user-agent’,
‘x-csrftoken’,
‘x-requested-with’,
‘Pragma’,
‘token’
)
url编写
urls.py中引入每个app中的urls
from django.conf.urls import url,include
include 为 引入
urlpatterns = [
url(r’^access/’, include(‘views.access.urls’)),
]
app中的urls.py
from django.urls import path
from * import views
urlpatterns = [
···
path(‘wikiAdd’, views.wikiAdd),
···
]
jwt token 数据处理
加密
dic = {
‘exp’: datetime.datetime.now() + datetime.timedelta(hours=10), # 过期时间
‘iat’: datetime.datetime.now(), # 开始时间
‘iss’: ‘juanjikejis’, # 签名
‘data’: { # 内容,一般存放该用户id和开始时间
‘authou’: autho,
‘username’: username,
‘uid’: uid,
‘name’: name,
‘uids’: uids
},
}
tokensd = jwt.encode(dic, ‘几次秘密’, algorithm=‘HS256’)
生成的token为特别的字符串 bytes类型
需要用 tokensd.decode(‘utf8’) 修改为字符串
解密
获取请求头中的token并从字符串转为bytes
token = request.headers[‘token’]
tokens = str.encode(token)
jwtdata = jwt.decode( tokens , ‘几次秘密’, issuer=‘juanjikejis’, algorithms=[‘HS256’])
jwtdata中的数据中的data中有封存进入的数据
提取数据为 jwtdata[‘data’][‘内容’] 内容
json数据化处理
- json.loads json转为对象
json.dumps 对象转为json
json数据化处理必须为序列化的
md5加密
import hashlib
md5 = hashlib.md5()
passwordmd5 = ‘drex’+password+‘kjgdxtjj’
实例化md5加密方法
md5.update(passwordmd5.encode(‘utf-8’))
进行加密,python2可以给字符串加密,python3只能给字节加密
result = md5.hexdigest()