On Saturday 03 June 2017 13:57:54 Domagoj KovaÄ  wrote:

> url(r'^(?P<article_category_slug>[\w-]+)/$',
> views.view_article_category, name="article-category"),
> 
> url(r'^(?P<product_category_slug>[\w-]+)/$',
> views.view_product_category, name="product-category"),
> 
> 
> Lets say that i have a article_category called news and product
> category call books.
> 
> When user requests for /news - first route is matched, request is
> successfully resolved and that's ok.
> When user requests for /books - first route is matched but books
> doesn't exist in article_category table and some kind of error is
> raised.
> 
> Is there any way to do something like this, when request is not
> resolved on first matched url (like in the second example), continue
> matching until request is successfully resolved.
> 
> i have two solution but non of those solution i don't like.
> 
> 1. just add products prefix to product-category url

And what's not to like? It's clear to humans and has SEO value.

> 2. use only one route in urlconfig:
> 
> url(r'^(?P<category_slug>[\w-]+)/$', views.view_category_resolver,
> name="category"),
> 
> and then in my view i would implement some kind of routing logic - i
> would say this is better solution for me because i would like to have
> my urls as simple as possible.

So an article titled 'coffee' and a product category 'coffee' end up with the 
same URL. And don't 
think it won't happen. I've seen it many times, especially with products that 
don't have a plural, 
like "fish". The theory being that if you name categories plular and products 
singular, you won't 
clash.

But yes, you would need to do this in a view or .... create your own resolver 
(see 
django.urls.resolvers).

Also think about the fact that just to resolve your URL, you would need at 
minimum n database 
queries, where n is the number of models matching. That don't scale well.
-- 
Melvyn Sopacua

-- 
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 https://groups.google.com/group/django-users.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/3705246.N73JH9XNuW%40devstation.
For more options, visit https://groups.google.com/d/optout.

Reply via email to