2017/1/14 23:29:24
Django學習筆記 POST上傳數據
普通的GET請求就不多說了
這一次的需求是需要把一些數據通過POST回傳到后端
1 請求URL&視圖函數
首先我們創建一個url接收器:
from django.conf.urls import url
from django.contrib import admin
from MyBlog import views
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^upload/$',views.recieve_data),
]
這里views.receive_data函數就是對應處理post請求的視圖函數
接下來我們創建一個處理POST請求的視圖函數:
def recieve_data(request):
if request.method == 'POST':
...
return render(request,'Base.html')
else:
return render(request,'Base.html')
這里可以看到,在視圖函數中我們對請求做了判斷:是否為POST請求,使用的request.method屬性
在判斷了POST以后我們對我們具體的數據內容進行分析,先看一下我們的html內容:
很明確,當用戶點擊提交按鈕之后,我們將日志的標題以及內容傳送回后端
$("#textSave").click(function(){
//獲取輸入的標題以及內容
var textTitle=$("#formGroupInputLarge").val()
var textHtml=editor.$txt.html()
var textShort=editor.$txt.text()
//通過post方式回傳
$.post("/upload/",
{
title:textTitle,
content:textHtml,
shortContent:textShort
};
這里使用了jQuery的異步請求方式
$.post("/upload/",
{
title:textTitle,
content:textHtml,
shortContent:textShort
}
$.post()參數最多三個,分別為:url/data/回調函數
這里沒有回調函數,返回的數據為標題/內容/純文本內容
那么我們如何在視圖函數中獲取這些請求的數據呢?
解決方法當然都在我們的必備參數request之中:
def recieve_data(request):
if request.method == 'POST':
title=request.POST['title']
content=request.POST['content']
shortContent = request.POST['shortContent']
revisedTime='%d' % time.time()
SKBlog.objects.create(title=title,revisedTime=revisedTime,content=content,shortContent=shortContent)
print(SKBlog.objects.get(title=title).shortContent)
return render(request,'Base.html')
else:
return render(request,'Base.html')
通過request.POST[參數key]來獲取對應的數據內容
測試一下:
輸出了我們的內容,OK!
當然,這里使用了設置好的數據模型來保存數據