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.

Reply via email to