2013-04-10 56 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