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))

 

浏览器输入:

 

 

 

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

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM