从其他Django应用程序渲染django-cms页面

时间:2013-03-13 13:04:39

标签: django django-cms django-apps

有没有办法在另一个Django应用程序的视图中使用修改后的上下文呈现django-cms页面?

...我知道“django-cms方式”是通过插件和钩子将你的其他应用程序整合到django-cms中。但是我想以相反的方式做到这一点,因为这对我来说更有意义,并且更容易重用应用程序,我找不到有关如何执行此操作的文档。应该有一种简单的方法可以从我的视图中调用django-cms视图并做一些“voodoo”来使它工作,对吗?

2 个答案:

答案 0 :(得分:3)

from cms.views import details

def show_some_page(request):
    return details(request, 'slug_of_page_to_show')

答案 1 :(得分:1)

我过去解决这个问题的方法是使用urllib2(或请求)对URL进行get请求,并从响应中提取相关的部分。

...
site = Site.objects.get_current()
protocol = 'http' if DEBUG else 'https'
response = urllib2.urlopen('%s://%s%s' % (protocol,
    site.domain, page.get_absolute_url()))  # page is a Django-CMS page object
html_content = response.read()
response.close()
...

Django-CMS中的每个page对象都有一个.get_absolute_url()方法,这就是我以编程方式获取URL的方式,但据我所知,Django-CMS API没有有一个渲染页面的方法。

如果有不同/更好的方法来做到这一点,我很想知道它是什么。