Django获取前端数据的方式

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匹配视图时直接写正则

在这里插入图片描述

  • 7
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值