I found an article that described how theonion.com did something similar. Their url is the slug and an ID separated by a comma. The article said pulling by ID gives a performance gain. But they wanted to keep the seo friendly url as well.
http://www.theonion.com/articles/secretary-of-agriculture-attends-diplomatic-meetin,26822/ With that idea I implemented a solution that I like: My path resolves to: /<slug>,<api_id>/foo #urls.py urlpatterns = patterns('app.views', (r'^(?P<pageslug>[\w-]+),(?P<api_id>.*)/foo/$', 'viewfunction'), ) #views.py def viewfunction(request, api_id, pageslug): if pageslug != themodel.slug: return HttpResponsePermanentRedirect(thebattle.get_absolute_url()) else: themodel = get_object_or_404(MyModel, custom_id=api_id) ... #models.py set get_absolute_url() in models.py accordingly. ~Matt On Dec 7, 1:36 pm, mattym <slackbabb...@gmail.com> wrote: > Hi all - > > Question. I would love to use a slug in the usual way for nice urls: > > #urls.py > urlpatterns = patterns('app.views', > (r'^(?P<myslug>.*)/foo/$', 'viewfunction'), > ) > > #views.py > def viewfunction(request, myslug): > themodel = get_object_or_404(MyModel, slug=myslug) > > However, due to requirements 'themodel' will have to be pulled by a > custom id that is retrieved via an API. From there to get proper > routing I had to chang urls.py and views.py to. > > #urls.py > urlpatterns = patterns('app.views', > (r'^(?P<api_id>.*)/foo/$', 'viewfunction'), > ) > > #views.py > def viewfunction(request, api_id): > themodel = get_object_or_404(MyModel, custom_id=api_id) > > This works. But with ugly URLS: > > What is the cleanest way to pull mymodel with the custom api_id, and > still have a slug/seo friendly url? > > This seems simple but my mind is trying to make it complex. > > Thanks, > Matt -- You received this message because you are subscribed to the Google Groups "Django users" group. To post to this group, send email to django-users@googlegroups.com. To unsubscribe from this group, send email to django-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/django-users?hl=en.