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

时间:2020-05-18
本文章向大家介绍django路由url传递参数的几种方式,主要包括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/<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))

浏览器输入:

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

原文地址:https://www.cnblogs.com/wangyuxing/p/12909182.html