django如何在url中动态获取TemplateView

时间:2013-08-06 14:07:36

标签: regex django

我有以下网址

url(r'^view/1$', View1.as_view(), name='view'),
url(r'^view/2$', View2.as_view(), name='view'),
url(r'^view/3$', View3.as_view(), name='view'),

和观点视图

class View1(TemplateView):
    pass

class View2(TemplateView):
    pass

class View3(TemplateView):
    pass

我的问题是如何基于正则表达式动态获取TemplateView

即,我想要类似的东西     url(r'^ view /(number)$',View(number).as_view(),name ='view'),

1 个答案:

答案 0 :(得分:0)

django文档非常好。请在询问之前在那里搜索。这是Django Book的链接。 https://docs.djangoproject.com/en/dev/ref/forms/validation/#form-and-field-validation

你想要的是数字的正则表达式。

所以url(r'^view/(\d+)$', view)

然后你的观点必须带一个参数。

类似的东西:

def view(request, number):
    if number == 1:
        #do first thing
    elif number == 2:
        #do second thing
    #etc...

当然,使用类似这样的东西的更合理的方式是将数字对应于某些数据(例如,存储在数据库中的对象的pk)。请记住,最好让您的网址具有某种意义。因此,如果有三个网址正在做一些完全不同的事情,也许它们应该看起来几乎相同,只有一个数字来区分它们。