0

我有以下网址

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

4

1 回答 1

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)。请记住,最好让您的网址有意义。因此,如果有 3 个 url 正在做完全不同的事情,也许它们看起来应该几乎相同,只有一个数字来区分它们。

于 2013-08-06T14:15:03.347 回答