2013-03-13 52 views
2

是否有任何方法从另一个Django应用程序中的视图渲染django-cms页面并使用修改的上下文?从其他Django应用程序渲染Django-cms页面

...我知道“django-cms方式”是通过插件和钩子将您的其他应用程序集成到django-cms中。但我想反过来这样做,因为这对我来说更有意义,并且更容易重用应用程序,并且我没有找到有关如何执行此操作的文档。应该有一个简单的方法来从我的视图中调用django-cms视图,并执行一些“巫术”来使其工作,对吧?

+0

我有点困惑,为什么你想打电话给我从'我的看法'的'Django-CMS视图'。你试图完成什么?这句话特别令人困惑:“应该有一种简单的方法来从我的角度调用django-cms视图,并且做一些”巫术“来使它工作,对吗?”我无法想象自己从另一个视图中调用视图的时间... – respondcreate

+0

@respondcreate我真正需要的是“从另一个Django应用程序中的视图呈现django-cms页面”,因为我说过。如果有这样的API,那很好,这是我希望有人知道的......如果没有,那么即使是从我的角度来说,调用django-cms视图这种丑陋的方式也是好的......我'我使用新的webapp时完成了从视图中调用视图类型的东西我还没有时间理解,并且必须尽快完成一个功能,然后在我明白事情是如何建立的时候进行重构。 – NeuronQ

回答

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没有渲染页面的方法。

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

3
from cms.views import details 

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

为什么downvote?这是一个非常好的主意。 @NeuronQ需要的丑陋的黑客将把所需的上下文变量放入请求变量中。 –