Django URL配置

时间:2010-02-27 01:14:39

标签: regex django django-urls

我有一个购买页面,可以选择参数作为礼物,如果是礼物,视图会将礼物表格传递给模板,如果没有,则会将常规购买表格传递给。

我的旧常规网址,重定向到两个单独的视图:

(r'^(?P<item>[-\w]+)/purchase/$', 'purchase_view'),
(r'^(?P<item>[-\w]+)/purchase/gift$', 'gift_view'),

并且观点是这样的:

def purchase_view(request,item):
....use purchase form

def gift_view(request,item):
....use giftform

这确实是一个糟糕的设计,因为两个视图几乎都是相同的但使用的形式。

我也想知道如何使用GET并赠送礼物作为GET参数,但这不是一个好主意,因为我对这些页面使用POST方法,特别是在验证后会引起问题。

如何将其设为单个网址和单个视图?

由于

1 个答案:

答案 0 :(得分:3)

urls.py

url(r'^(?P<item>[-\w]+)/purchase/$', 'purchase_view', name='purchase_view'),
url(r'^(?P<item>[-\w]+)/purchase/(?P<gift>gift)/$', 'purchase_view', name='gift_view'),

views.py

def purchase_view(request, item, gift=False):
    if gift:
        form = GiftForm
    else:
        form = PurchaseForm
    ...