timi 1 Follower

I work by Tesobe for a practical year

Location: Berlin

Quick Links

View Show Available Profiles

Authors (1)

timi

Related Projects / Groups


Django: Pre-Validation with the URL dispatcher

Public feed posted on Thu, 29 Mar 2012 by timi


I work currently on a rating feature, to rate some items and I want to do this in one view to handle the methods POST and GET.

POST should handle the submit request(rate count) of the item

GET should handle the template with the right item to see the current user/ global rate

Situation:

  • max. stars = five
  • min. stars = one
  • zero stars are not possible to vote

What we need to rate?

  • item id
  • vote result

I start to add the first version of the view and I was adding two URL's one for GET and one for POST. And I what to handle the parameter over the named groups in Django.

urlpatterns+=patterns('',url(r'^ajax/votes/(?P\w+)/$','vote_for_item'),# GETurl(r'^ajax/votes/(?P\w+)/(?P\d+)/$','vote_for_item')# POST)

What we can to be more explicit?

We can use re of Python and so we can set a range of allowed numbers with [1-5]. So we have only a range of URL's for every state of the rating situation and so we get a 404 if we want to access for example the vote-URL with the vote count of six.

urlpatterns+=patterns('',url(r'^ajax/votes/(?P\w+)/$','vote_for_item'),# GETurl(r'^ajax/votes/(?P\w+)/(?P[1-5])/$','vote_for_item')# POST)

The next thing we have to two exact same URL's the only difference is that the POST needs an extra parameter.

Can we make this parameter optional?

Yeah, we can do it again with re. We have to wrap the vote part in (?:...) and after it a single ?. More in the Python Docs.

The end solution:

I have one URL for the cases of GET and POST and we create only the URL's what I need for the rating feature

urlpatterns+=patterns('',url(r'^ajax/votes/(?P\w+)/(:?(?P[1-5])/)?$','vote_for_item'),)

FYI:

Optional named groups Python re

URL dispatcher at Django Docs

re at Python Docs


>(This is an imported feed item. You can read the original item at /azd325.github.com/Web/2012/03/22/django-pre-validation-with-the-url-dispatcher"><span class="http-markup"><a href="http://azd325.github.com/Web/2012/03/22/django-pre-validation-with-the-url-dispatcher" rel="nofollow">http://azd325.github.com/Web/2012/03/22/django-pre-validation-with-the-url-dispatcher</a></span>)

Replies
    This Evis needs your voice! Please Login to post comments.