我有一个购买页面,可以选择参数作为礼物,如果是礼物,视图会将礼物表格传递给模板,如果没有,则会将常规购买表格传递给。
我的旧常规网址,重定向到两个单独的视图:
(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方法,特别是在验证后会引起问题。
如何将其设为单个网址和单个视图?
由于
答案 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
...