django 基于正则表达式的url

方式一:

urls.py

from mytest import views

urlpatterns = [
    url(r'^index-(d+)-(d+).html', views.Index.as_view()),
]

views.py

from django.http import HttpResponse
from django.shortcuts import render
from django.views import View


class Index(View):

    def get(self, req, param1, param2):
        print(param1, param2)
        return HttpResponse(param1+'--'+param2)

    def post(self, req):
        pass
        return render(req, 'index.html')

当访问url : http://127.0.0.1:8000/index-3-4.html   

返回

这样我们看到,将url中传递的参数“3”和“4”取到并输出了。

方式二:

urls.py

from mytest import views

urlpatterns = [
    url(r'^index-(?P<param2>d+)-(?P<param1>d+).html', views.Index.as_view()),
]

views.py 不变

返回结果:

这样相当于是固定将第一个数字传给param2,第二个数字传给param1,因此不用管形参的位置在哪里。

另外:

    如果参数较多的话可以使用万能参数,例如:

    def index(req, *args, **kwargs):

      pass

这样不管url传递了几个参数都没有问题了。

*args 将参数封装为元组

**kwargs 将参数封装为字典

原文地址:https://www.cnblogs.com/wumingxiaoyao/p/6514710.html