Django用sql原生方法操作基本信息添加到数据库

时间:2022-03-27 21:12:55 类型:python
字号:    

Django用sql原生方法操作基本信息添加到数据库的视图及模板示例

视图页面:

from django.http import HttpResponse
from django.shortcuts import render
from django.db import connection
import time,uuid
from django.conf import settings

def add(request):
    if request.method == "GET":
        return render(request,'admin/student/add.html')
    elif request.method == "POST":
        result = request.POST.dict()
        hobby  = request.POST.getlist("hobby")
        # getlist('hobby') 用于接收多个信息, 通常是 多选框
        result['hobby'] = ",".join(hobby)
        result['addtime'] = time.time()
        del result['csrfmiddlewaretoken']

        # 文件 上传
        try:
            file = request.FILES["file"]   #如果没有选择文件上传,就会有 异常
            list = file.name.split(".")
            ext = list[-1]
            newname = uuid.uuid1().hex + "." + ext
            #生成新的文件名
            ext_tup = ("gif", "png", "jpeg", "jpg")
            if ext not in ext_tup:
                return HttpResponse("<script>alert('只能上传图片');history.back();</script>")
            #imgname = "./statics/up/" + newname
            imgname   = settings.UPLOAD_PATH + newname
            # 在setting文件中设置 UPLOAD_PATH

            destination = open(imgname, 'wb+')
            for chunk in file.chunks():
                destination.write(chunk)
        except Exception as err:
            print(err)
            newname = ''
        result['pic'] = newname
        #设置上传文件名

        cursor = connection.cursor()
        sql = """insert into student(name,sex,blood,hobby,intro,addtime,pic)values('{name}','{sex}','{blood}','{hobby}','{intro}','{addtime}','{pic}')"""\
            .format(**result)
        
        num = cursor.execute(sql)

        return HttpResponse("添加成功")

模板页面:

<div class="form">
    <form action="/admin/student/add" method="post" enctype="multipart/form-data">
        {% csrf_token %}
        <li>
             姓名: <input type="text" name="name">
        </li>
        <li>
             性别: <input type="radio" name="sex" value="男" checked> 男
                   <input type="radio" name="sex" value="女">
        </li>
        <li>
             血型: <select name="blood">
                        <option value="A">A型</option>
                        <option value="B">B型</option>
                        <option value="AB">AB型</option>
                        <option value="O">O型</option>
                    </select>
        </li>
        <li>
             爱好:
            <input type="checkbox" name="hobby" value="篮球">篮球
            <input type="checkbox" name="hobby" value="足球">足球
            <input type="checkbox" name="hobby" value="网球">网球
            <input type="checkbox" name="hobby" value="排球">排球
            <input type="checkbox" name="hobby" value="台球">台球

        </li>
        <li>
            照片:
            <input type="file" name="file">
        </li>
        <li>
             介绍:
            <textarea name="intro" ></textarea>
        </li>
        <li>
            <input type="submit" value="提交">
        </li>
    </form>
</div>


<