2013-04-10 80 views
3

是否有可能通過它的slug來解析頁面url? 喜歡的東西:django cms - 通過slug解析頁面url

from django.core.urlresolvers import reverse 
reverse('pages-details-by-slug',{slug:'my-page-slug'}) 

但我得到:

NameError: name 'slug' is not defined 

任何幫助?

回答

5

Python是不是Java腳本;字典鍵需要引用。

reverse('pages-details-by-slug', {'slug': 'my-page-slug'}) 
+0

對於Django 1.9, reverse('page-details-by-slug',kwargs = {'slug':my-page-slug})' – Bobort 2016-03-22 20:13:50

1

解決:

try: 
    from cms.models import Title 
    page = Title.objects.get(slug="my-page-slug").page 
    return page.get_absolute_url() 
except Title.DoesNotExist: 
    pass 
+3

如果使用草稿/已發佈版本的頁面,值得注意的是可以將**兩個**對象返回到上面的頁面對象。 可能值得記住是否需要發佈和/或草稿版本。 – niceguydave 2014-08-14 14:21:23

+3

對於已發佈/起草的案例,您可以使用'page = Title.objects.get(slug ='my-page-slug',page__publisher_is_draft = False).page'(在Django CMS 2.4上測試) – 2015-03-02 15:19:41