Конфигурация Django URL - PullRequest
       9

Конфигурация Django URL

1 голос
/ 27 февраля 2010

У меня есть страница покупки, она может принимать необязательный аргумент в качестве подарка, если это подарок, представление передает форму подарка в шаблон и, если нет, обычную форму покупки.

мой старый обычный URL, который перенаправляет на два отдельных представления:

(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 для этих страниц, особенно это может вызвать проблемы после проверки.

Как я могу сделать это один URL и один вид?

Спасибо

1 Ответ

3 голосов
/ 27 февраля 2010

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
    ...
...