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>