django路由url传递参数的几种方式

1、path位置传递,注意:参数名必须一致,浪费了我太多时间

url.py中:

path('info/<p1>/<p2>/', Tinfo.as_view())
path('info/<str:p1>/<int:p2>/', Tinfo.as_view())   # 这么写也可以

views.py中:

class Tinfo(APIView):

    def get(self, request, p1, p2):

        print('参数是:', p1)

        return Response('success:{},{}'.format(p1, p2))

浏览器中输入:

127.0.0.1:8000/badmin/info/pkfkfkf/123/

2、re_path,这个与之前的传递方式已经不同了,这个就没有参数名需要一致的问题了,根据参数位置自动匹配

url.py中

from django.urls import re_path
re_path('info/(\w+)/(\d+)/', Tinfo.as_view()),

view.py中

class Tinfo(APIView):

    def get(self, request, p1, p2):

        print('参数是:', p1)

        return Response('success:{},{}'.format(p1, p2))

3、关键字传参

path('info',Tinfo.as_view())   # 推荐这种方法:url地址这样写/info?p1=123,获取数据用request.GET.get('p1')
path('info/<str:p1>/<int:p2>/', Tinfo.as_view()) #与上同

GET:

class Tinfo(APIView):

    def get(self, request):

   
        p3 = request.GET.get('p3')
        

        return Response('success:{}'.format(p3))

浏览器中输入:

127.0.0.1:8000/badmin/info/pkfkfkf/123/?p3=err

 


 

POST取参数:

url.py:

path('info/<str:p1>/<int:p2>/', Tinfo.as_view()) # 与上相同

views.py中:

class Tinfo(APIView):

    def post(self, request, p1, p2):

        p4 = request.POST.get('p4')
        print('另一种参数p4:', p4)

        return Response('success:{},{}'.format(p1, p2))

 

浏览器输入:

 

 

 

以上几种方法包含了常用的参数传递方式,如果觉得写得好,请支持一下!

 

posted @ 2020-05-18 10:39  王二黑  阅读(11810)  评论(0编辑  收藏  举报