網站首頁 編程語言 正文
Django獲取前端傳輸的數據的幾種方式
獲取拼接在url上的數據
class UrlData(View):
def get(self, request):
# request的GET方法獲取拼接在url上數據的對象
dict1 = request.GET
# get方法根據key取value
name = dict1.get('name')
age = dict1.get('age')
return HttpResponse('get--{}--{}'.format(name, age))
測試
獲取post請求提交的表單數據
def post(self, request):
# request的POST方法獲取表單數據對象
dict1 = request.POST
# 同樣是get獲取數據
name = dict1.get('name')
age = dict1.get('age')
return HttpResponse('post--{}--{}'.format(name, age))
postman測試
獲取json數據
class JsonData(View):
def post(self, request):
# request的body方法獲取的是所有請求體的二進制數據
json_body = request.body
print(json_body)
# 把請求體的二進制數據轉換為json格式
json_data = json.loads(json_body)
#get方法鍵值對方式獲取值
name = json_data.get('name')
age = json_data.get('age')
gender = json_data.get('gender')
return HttpResponse('name: {},age: {}, gender: {}'.format(name, age, gender))
打印臺結果
測試
提取路徑數據
class LuJData(View):
""" 多傳一個變量age """
def get(self, request, age):
return HttpResponse('age: {}'.format(age))
注冊視圖時代碼
注意: 注冊時使用的轉換器里的變量名要 和 視圖里獲取數據的變量名的一致
urlpatterns = [
path('users/urldata/', views.UrlData.as_view()),
path('users/jsondata/', views.JsonData.as_view()),
# 使用int轉換器 <轉換器: 變量名>
# 變量名要和視圖函數添加的那個變量一樣的名字
path('users/lujdata/<int:age>/', views.LuJData.as_view()),
]
測試
自定義轉換器
當匹配url數據的時候有要求就可以使用自定義轉換器
工程目錄添加converters.py文件
自定義轉換器內容
class MobileConverter:
# regex是正則表達式
regex = '1[3-9]\d{9}'
# 模仿Django自帶轉換器
def to_python(self, value):
return int(value)
def to_url(self, value):
return str(value)
在工程目錄的urls.py文件中注冊轉換器
# 參數1 為自定義轉換器類 參數2 起了一個別名
register_converter(MobileConverter, 'mobile')
注冊視圖函數時使用自定義轉換器
urlpatterns = [
path('users/urldata/', views.UrlData.as_view()),
path('users/jsondata/', views.JsonData.as_view()),
# 使用自定義轉換器
path('users/lujdata/<mobile:age>/', views.LuJData.as_view()),
]
測試
re_path匹配視圖時直接寫正則
如何從前端獲取數據,post到后臺,再入數據庫呢
首先,從前端獲取值。這里需要你自己去掌握怎么取,我只是總結一下我這個過程!下邊我是想能同時上傳多個文件,所以才嵌套的循環。
然后,根據對應的url,找到相關的model(這里,需要了解好你的數據庫屬性)。比如,這里是我想入庫的model:
好了,看完這個,我們去前端所post到的assign(),這里我們需要掌握一下
# 篩選條件:name和task_tags,所以不能用get(),而是用filter()
condition_filter = {'task_tags':task_id, 'name':file_name}
# 得到一個Queryset
testrawdata_Qset = TestRawData.objects.using('oracle').filter(**condition_filter)
# 獲得Queryset的值(這里我需要的是id)
for testrawdata in testrawdata_Qset:
data_id = testrawdata.id
get_or_create()就是入庫了,看看入庫結果(成功!):
總結
原文鏈接:https://blog.csdn.net/bjsyc123456/article/details/115246319
- 上一篇:沒有了
- 下一篇:沒有了
相關推薦
- 2022-12-11 C語言計算1/1+1/2+1/3+…+1/n的問題_C 語言
- 2022-07-21 解決win10系統網絡連接正常,但是網頁打不開的問題
- 2022-12-05 Django中使用AJAX的詳細過程_python
- 2023-07-14 echarts圖表進度條類型圖
- 2022-10-06 python中關于對super()函數疑問解惑_python
- 2022-05-11 使用git命令上傳代碼_其它綜合
- 2023-03-04 React深入分析更新的創建源碼_React
- 2023-02-27 一文帶你學習C/C++中的<Windows.h>庫_C 語言
- 欄目分類
-
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支