从零开始的Linux运维屌丝之路,资源免费分享平台   运维人员首选:简单、易用、高效、安全、稳定、社区活跃的开源软件

Django 入门Views

发布:蔺要红09-22分类: Python


# 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请求"})
 
温馨提示如有转载或引用以上内容之必要,敬请将本文链接作为出处标注,如有侵权我会在24小时之内删除!

欢迎使用手机扫描访问本站