2011-07-21 50 views
3

我正在部署一個Django網站。我所有的自定義插件都可以在我的電腦上工作(我可以從下拉列表中將它們添加到模板塊中),但是當我將代碼推送到站點時,並非所有插件都可用。Django-CMS插件沒有出現

創建數據庫表,如果我導入plugin_pool並呼叫discover_plugins(),然後get_all_plugins()插件都顯示出來。所以我的問題是,爲什麼我的插件不顯示?有任何想法嗎?

+0

添加更多信息:) – iElectric

+0

您可能會建議一些嗎?我真的不知道從哪裏開始尋找django-cms。 –

回答

4

是你的應用程序的插件(cms_plugins.py文件)在INSTALLED_APPS

它有一個models.py(可能是空的)文件嗎?

使用python manage.py shell時,能導入cms_plugins.py文件嗎?

最常見的問題是在跟隨basic example Django的CMS 3.在cms_plugins.py文件

+0

是的,是的,是的:(我放棄了,只是解決了這個問題。 –

+6

你是怎麼解決的? – Aleyna

+0

運行python shell並從那裏調試 – Dave

1

我遇到過這個問題導入錯誤的例子表明,下面的代碼就可以了(在發生關聯的模板):

#cms_plugins.py 
from cms.models.pluginmodel import CMSPlugin 
class HelloPlugin(CMSPluginBase): 
    model = CMSPlugin 
    render_template = "hello_plugin.html" 

plugin_pool.register_plugin(HelloPlugin) 

然而,我發現,使用CMSPlugin作爲模型時,插件是不是在頁面結構編輯器中可見。

儘管這是一個事實,即插件是:

  1. 在了在該項目的INSTALLED APPS
  2. 該應用程序中列出的應用程序的根目錄下有一個models.py文件(但該插件沒有使用任何這些模型)
  3. cms_plugins.py文件可以從Django的殼

嘗試Django的外殼進口進口,爲L isted示例頁面上:

$ python manage.py shell 
>>> from django.utils.importlib import import_module 
>>> m = import_module("myapp.cms_plugins") 

的解決方案是使用在models.py文件中定義的模型,其延伸CMSPlugin:

#cms_plugins.py 
from .models import MyModel 

class HelloPlugin(CMSPluginBase): 
    model = MyModel 
    render_template = "hello_plugin.html" 

plugin_pool.register_plugin(HelloPlugin) 

# models.py 
class MyModel(CMSPlugin): 
    pass 

像魔法,插件然後在「通用」上市頁面結構編輯器。