Hi Alexendr,
On Wednesday 28 May 2014 18:54:05 Alexandr Shurigin wrote:
> Hi all.
>
> What do you think about adding some extra default and more simpler syntax
> for url patterns?
>
[looking for a way to re-write...]
>
> url(r'^(?P<slug_genre>[^/]+)/(?P<slug>[^/]+)/news/(?P<slug_item>[^/]+)$',...
>
[...as...]
>
>
> url(r'^:slug_genre/:slug/news/:slug_item$', ,,,
>
> This will make urls very short, fast-readable and writable.
>
I agree -- but there are two points:
1) The kind of expressions you'd want to use is probably very project-specific;
2) Something very close is easy to achieve, without any change to Django. For
example, for the case you gave above, add this near the top of your urls.py:
import re
def t(tag_url):
"""
Take a URL pattern with parts marked as :tag, and return
the appropriate Django url-pattern
"""
tag = re.compile(r':([\w]+)')
pat, _ = tag.subn(r'(?P<\1>[^/]+)', tag_url)
return pat
and now, you can write your urls as
url(t(r'^:slug_genre/:slug/news/:slug_item$'), ,,,
or even add further:
def turl(pat, *args, **kw): return url(t(pat), *args, **kw)
and write urls as
turl(r'^:slug_genre/:slug/news/:slug_item$', ,,,
Thus, I'm not sure anything needs to be changed in Django to support this.
You can, of course, make some generalization of this and offer it to the
community -- if it becomes very popular, it then may be a good candidate for
inclusion in Django. Just to be clear, I'm *not* saying that it won't be --
just that, before adding something like this to Django, we'd want to see how
it gets used, so the feature we finally implement is useful for many people.
HTH,
Shai.
--
You received this message because you are subscribed to the Google Groups
"Django developers" 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-developers.
To view this discussion on the web visit
https://groups.google.com/d/msgid/django-developers/201405281953.35201.shai%40platonix.com.
For more options, visit https://groups.google.com/d/optout.