Django用sql原生方法操作基本信息添加到數(shù)據(jù)庫的視圖及模板示例
視圖頁面:
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文件中設(shè)置 UPLOAD_PATH
destination = open(imgname, 'wb+')
for chunk in file.chunks():
destination.write(chunk)
except Exception as err:
print(err)
newname = ''
result['pic'] = newname
#設(shè)置上傳文件名
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="網(wǎng)球">網(wǎng)球
<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>