url 和 path django 中url与path小记
# url 最基础写法
from utils import views as utils
from dev import views as dev
from django.contrib import admin
from django.urls import path
from django.conf.urls import url
urlpatterns = [
path('admin/', admin.site.urls),
url('test01/', dev.test01),
url('test02/', dev.test02),
url('test03/', dev.test03),
path('cmq/', utils.cmq),
]
# views
# views最基础写法
# HttpResponse 返回字符串
from django.http import HttpResponse # from django.shortcuts import HttpResponse
def test01(request):
return HttpResponse("test01-HttpResponse")
# JsonResponse 返回json格式信息
from django.http import JsonResponse
def test02(request):
# 返回JSON
data = {"code": 0, "msg": "JsonResponse"}
return JsonResponse(data) # django 内置的方法,只支持 字典
# 准许返回列表
m = [1, 2, 3]
return JsonResponse(m, safe=False) # django 内置的方法,safe=False 不进行检测,也可以返回列表
# render返回html redirect 返回其他接口
from django.shortcuts import render,redirect # from django.shortcuts import render, redirect
def test03(request):
return render(request, "test03.html")
# 添加成功后直接跳转到用户列表页
# return redirect("/user_list/")
# 上传
# 上传
def upload(request):
"""
保存上传文件前,数据需要存放在某个位置。默认当上传文件小于2.5M时,django会将上传文件的全部内容读进内存。从内存读取一次,写磁盘一次。
但当上传文件很大时,django会把上传文件写到临时文件中,然后存放到系统临时文件夹中。
:param request:
:return:
"""
if request.method == "POST":
print(request.FILES)
print(request.FILES["upload_file"].name)
# 从请求的FILES中获取上传文件的文件名,file为页面上type=files类型input的name属性值
filename = request.FILES["upload_file"].name
# # 在项目目录下新建一个文件
with open(filename, "wb") as f:
# 从上传的文件对象中一点一点读
for i in request.FILES["upload_file"].chunks():
# 写入本地文件
f.write(i)
return JsonResponse({'code': 1, 'msg': "上传成功"})
else:
return render(request, "upload.html")
# 基础的增删该查
from django.http import JsonResponse
# 列表
def envlist(request):
# 去数据库中查询所有的环境 利用ORM查询数据库
ret = models.EnvConf.objects.all().values()
print(ret)
data = {}
data['envlist'] = list(ret)
return JsonResponse(data)
#
# 添加环境列表
# 多值新增参考
pjdict = {}
for key in request.POST:
pjdict[key] = request.POST.get(key, None)
models.ProjectList.objects.create(**pjdict)
def addenv(request):
if request.method == "POST":
# 用户填写了新的环境,并发送了POST请求过来
newenv = request.POST.get("myenv", None)
print("xin_env", newenv)
if newenv:
# 判断 env 是否存在
result = models.EnvConf.objects.filter(myenv=newenv)
if result.exists():
return JsonResponse({"code": 1, "msg": "添加失败,已经存在"})
else:
# 去数据库中新创建一条用户记录
models.EnvConf.objects.create(myenv=newenv)
return JsonResponse({"code": 0, "msg": "添加成功"})
# return JsonResponse({'code': 0, "项目": pj_name, "状态": "succ", 'msg': pj_name + "项目添加成功"})
return JsonResponse({"code": 1, "msg": "添加失败,环境不能为空"})
# 删除
# 删除环境
def delenv(request):
print(request.GET)
# 获取 GET 参数
del_id = request.GET.get("id", None) # 字典取值,取不到为 None
# 判断是传 id
if del_id:
result = models.EnvConf.objects.filter(id=del_id)
print(result)
if result.exists():
# 根据id查找到数据/并且删除
models.EnvConf.objects.get(id=del_id).delete()
return JsonResponse({'code': 0, 'msg': "删除成功"})
else:
return JsonResponse({'code': 1, 'msg': "id不存在"})
else:
return JsonResponse({'code': 1, 'msg': "要删除的数据不存在"})
# 编辑
def edit_user(request):
# 用户修改完 点击提交按钮,发送参数
if request.method == "POST":
print(request.POST)
# 取出新的 id 和 name
edit_id = request.POST.get("id")
new_name = request.POST.get("username")
# 判断 name 是否存在
result = app01_models.UserInfo.objects.filter(id__contains=edit_id)
print(result)
if result.exists():
# 更新信息
# 根据id取到编辑的是用户
edit_username = app01_models.UserInfo.objects.get(id=edit_id)
edit_username.name = new_name
edit_username.save() # 把修改提交到数据库
# 返回成功
return JsonResponse({'code': 0, 'msg': "修改成功"})
# 从GET请求的URL中取到id参数
edit_id = request.GET.get("id")
print('-', edit_id)
if edit_id:
# 获取到当前用户ID信息
ret = app01_models.UserInfo.objects.get(id=edit_id)
print('------',ret)
print(type(ret))
ret.__dict__.pop("_state")
return JsonResponse(ret.__dict__, safe=False)
else:
return JsonResponse({'code': 1, 'msg': "使用post请求"})