1. FORM 表單傳遞數據(post或get ,一般用post傳遞數據)
- 普通數據
- form 表單提交數據
<form action=" 傳遞數據到達地址" method="post"> <!-- Django post方法傳遞數據需要令牌,否則報錯 --> {% csrf_token %} title:<input type="text" name="title"><br> content: <textarea name="content" id="" cols="30" rows="10"></textarea> <button type="submit">提交</button> </form>
- 通過前端的 input 寫入數據,在views視圖處理函數接收
# GET / POST [' 前端input設置的對應數據 name '] p=request.GET[' title ']
- 文本文件或圖片等文件
- 提交數據
<!-- 傳遞文件需要 enctype ,否則無法傳遞文件 --> <form action="" method="post" enctype="multipart/form-data"> {% csrf_token %} 選擇文件:<input type="file" name="img" ><br> <button type="submit">上傳</button> </form>
- 接收文件
cover= request.FILES['img']
- 一般文件上傳都已經在 models 定義了,保存在數據庫指定的文件夾里,方便獲取
#原始上傳文件需要在程序設置打開文件,將上傳的文件寫入文件保存. # django只需通過類屬性設置為文件格式。 file=models.FileField(upload_to='./static/') #后邊的是保存路徑 #當上傳的只要圖片時,把屬性改為: head_img=models.ImageField(upload_to='./static/head/')
2. AJAX 傳遞數據
-
提交數據
普通的ajax 傳遞方法- 要修改 setting 配置
# django 用 Ajax 需要屏蔽 MIDDLEWARE = [# 'django.middleware.csrf.CsrfViewMiddleware',]
-
接收返回數據
- 添加接收與返回需要的模塊 views
#給用戶返回json格式數據,前后端分離。 #如果不經model_to_dict 轉化,就會報格式沒有序列化的錯 from django.http import JsonResponse from django.forms.models import model_to_dict #say是一個對象 return JsonResponse(model_to_dict(say)) #如果返回其他變量或不需要返回數據 return JsonResponse({'a':1})
-
額外
- 限制函數的訪問方法
#設置允許通過什么來訪問服務器,如果訪問方式不允許,服務器不處置。 from django.views.decorators.http import require_POST #函數限制只允許post訪問: 前面加 @require_POST 其他限制方法類似。 @require_POST def index(request):
3. a標簽(超鏈接)傳遞需要的數據參數
- 傳遞參數
#參數包含在鏈接中間,通過正則匹配 傳遞參數 <a href="/info/{{u.id}}/more/">詳情</a>
- 接收參數
#通過路由的正則匹配獲取傳遞的參數,存放在 u_id url(r'^(?P<u_id>\d+)/index/',views.index,name='index'), #在views視圖處理函數接收參數 def index ( request, u_id )
補充
- 一個網頁請求,可通過 if 判斷請求的方式是 get 或 post ,返回不同的結果
if request.method == 'GET': ...... return elif request.method=='POST': ...... return