Django 獲取傳遞數據

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   
    
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容