Hi,

I have a small form on a page that is mostly optional fields with the
exception of some drop down boxes. I want to take the data submitted
through this form and use them to form a URL.

My problem is with the URL writing. I first wrote some unit tests to
find the regular expressions that worked but Django doesn't seem to
like the '?' in URL configurations.

How can I write a workflow that converts optional, POSTed data to a
RESTful URL for processing?

Here's an example:

class IceCreamForm(forms.form):
    description = forms.CharField(required=False)
    flavour = forms.ChoiceField(choices=FLAVOUR_CHOICES, initial=0)
    FLAVOUR_CHOICES = (
        ...
    )

This is my form class. It contains one optional field, and one
required field. When rendered on a page, the form POSTs it's data to
the the 'process' view:

def process(request):
    # Standard form stuff (is_valid) ...
    params = {}
    if form.cleaned_data['description']:
        params.update(description=form.cleaned_data['description'])
        if form.cleaned_data['flavour']:
            params.update(flavour=form.cleaned_data['flavour'])

        return HttpResponseRedirect('proj.app.views.filter', kwags=params)

def filter(request, description=None, flavour=0):
    ... do stuff ...

Here, I collect the parameters from the form and try to turn them into
a pretty URL that redirects to the filter view to do something with
the data. It's the URL writing I'm having problems with. I want to
write things like:

urlpatterns += patterns('proj.app.views',
    (r'^(?P<flavour>\w+)/((?P<description>\w+)/)?$', 'filter'),
)

The question mark is wrapped around an extra '/' to complete the URL,
but it doesn't work. Nor does

urlpatterns += patterns('proj.app.views',
    (r'^(?P<flavour>\w+)/$', 'filter'),
    (r'^(?P<flavour>\w+)/(?P<description>\w+/$', 'filter'),
)

I'm surprised with the result of the last one, and so I'm sure I'm
missing something. Does anyone have any ideas or simplifications for
me?

Thanks,

Red Monkey



--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-users@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to