Al 31/03/13 19:00, En/na frocco ha escrit:
Hello,
Here is my current url.
url(r'^narrow_category/(\d+)/(\w*)/(\d*)/(\d*)/(\d*)/$',
'catalog.views.narrow_category', name="narrow_category"),
d+ is required
w* can be optional
last three d* can be optional
This setting is not working.
You should be a bit more explicit about what "is not working" means.
I presume that you expect that an URL like "narrow_category/23" should
be matched against your url definition. No, it won't, since the slashes
are not optional. All those will match against your regular expression:
narrow_category/23/////
narrow_category/23/foo////
narrow_category/23/45////
narrow_category/23///23//
I think that the cleanest solution is defining a set of urls and,
somehow, provide default values for the missing parts:
def my_view(request, foo, bar="spam", baz=1234):
pass
url(r"^narrow/(\d+)/$", views.my_view, ...)
url(r"^narrow/(\d+)/(\w+)/$", views.my_view, ...)
url(r"^narrow/(\d+)/(\w+)/(\d+)/$", views.my_view, ...)
Note that the parts are no longer optional (+ instead of *).
It works like this:
/narrow/23/
matches the 1st rule
django calls: my_view(request, "23")
the view gets the arguments: foo="23", bar="spam", baz=1234
/narrow/23/baz/
2nd rule
my_view(request, "23", "baz")
foo="23", bar="baz", baz=1234
/narrow/23/baz/45/
3rd rule
my_view(request, "23", "baz", "45")
foo="23", bar="baz", baz="45"
/narrow/23/45/
2nd rule
my_view(request, "23", "45")
foo="23", bar="45", baz=1234
HTH
--
You received this message because you are subscribed to the Google Groups "Django
users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/django-users?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.