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>