I am trying to do some Django URL matching.
i want a few urls where i have http://mysite.com/base?sort=type1/, http://mysite.com/base?sort=type2/, etc.
I can't figure out how to URL match these expressions: I'm very new to Django and never used Reg Ex before.
What I have for urls.py in my "base" application is:
url(r'^$','base.views.main, name='main'),
I can't figure out what to put to match my urls with question marks.
I'm trying something like
url(r'^?sort=popular/$', 'base.views.main_popular', name='main_popular'),
Thanks for help!
? won't match an "?" inside the url , instead it has its own meaning which you can look it up here :
Python Regular Expressions If you want to match the exact character of "?" inside your url , you have to somehow escape it ( cause it has a meaning in RegExs ) so you might wanna escape it by a "\" (a backslash ) so you would write \?sort ....
EDIT :
Okay so with what you've said in comments , seems here's your problem ,
main?sort=popular
occurs on your url pattern when you are rendering the template for/main/
with theGET
method dictionary argument ofsort=popular
, just write a function that distinguishes betweenGET
andPOST
, in theGET
part , have sth likesort_by = request.GET.get('sort','')
and then sort accordingly with the value of sort_by variable, would be sth like :and let go of that ? inside the url pattern , that's added when you request a page with a GET argument.
You don't match these against the regex. The elements after the
?
are not part of the URL, they are query parameters which can be accessed from your view viarequest.GET
.