Почему Django CMS doc'n пример Hello Plugin добавляетпрефикс к классу hello на рендере, вызывающий ошибку? - PullRequest
1 голос
/ 13 мая 2019

Я пытаюсь скопировать пример плагина Hello в документации по Django CMS здесь: http://docs.django -cms.org / ru / latest / how_to / custom_plugins.html

В CMS я могу видеть и добавлять HelloPlugin, но когда я нажимаю сохранить, я получаю: Значение исключения: нет такой таблицы: DEC_hello («DEC» - это название моего проекта)

Я скопировал / вставил код из doc'n в models.py и cms_plugins.py и hello_plugin html.

Я знаю, что это нормально в models.py для обычных (models.model) классов / таблиц, добавляемых в базу данных с префиксом имени проекта.

Но класс Hello (CMSPlugin) не создает таблицу в базе данных. Я предполагаю, что это «другое» и не должно быть добавлено в БД вообще как таблица, и, конечно, не с именем DEC_hellow.

Я сохранил все эти файлы .py, запустил makemigrations и перенес несколько раз без изменений / изменений.

Заранее спасибо за помощь.

Под управлением Django CMS 3.6.0, Django версия 1.11.20 Python 3.7.3 под управлением Windows 10

models.py

from django.db import models
from cms.models.pluginmodel import CMSPlugin

class Hello(CMSPlugin):
    guest_name = models.CharField(max_length=50, default='Guest')

cms_plugins.py

from cms.plugin_base import CMSPluginBase
from cms.plugin_pool import plugin_pool
from django.utils.translation import ugettext_lazy as _

from .models import Hello

@plugin_pool.register_plugin
class HelloPlugin(CMSPluginBase):
    model = Hello
    name = _("Hello Plugin")
    render_template = "hello_plugin.html"
    cache = False

    def render(self, context, instance, placeholder):
        context = super(HelloPlugin, self).render(context, instance, placeholder)
        return context

hello_plugin.html

<h1>Hello {% if request.user.is_authenticated %}
  {{ request.user.first_name }} {{ request.user.last_name}}
{% else %}
  {{ instance.guest_name }}
{% endif %}</h1>

Ошибка при нажатии сохранить, чтобы добавить плагин в CMS:

OperationalError at /en/admin/cms/page/add-plugin/
no such table: DEC_hello
Request Method: POST
Request URL:    http://localhost:8000/en/admin/cms/page/add-plugin/?placeholder_id=41&plugin_type=HelloPlugin&cms_path=/en/purpose-list/&plugin_language=en
Django Version: 1.11.20
Exception Type: OperationalError
Exception Value:    
no such table: DEC_hello
Exception Location: D:\dev\djangocms\lib\site-packages\django\db\backends\sqlite3\base.py in execute, line 328
Python Executable:  D:\dev\djangocms\Scripts\python.exe
Python Version: 3.7.3
Python Path:    
['D:\\dev\\djangocms\\StoneProj',
 'D:\\dev\\djangocms\\Scripts\\python37.zip',
 'D:\\dev\\djangocms\\DLLs',
 'D:\\dev\\djangocms\\lib',
 'D:\\dev\\djangocms\\Scripts',
 'c:\\users\\dad\\appdata\\local\\programs\\python\\python37\\Lib',
 'c:\\users\\dad\\appdata\\local\\programs\\python\\python37\\DLLs',
 'D:\\dev\\djangocms',
 'D:\\dev\\djangocms\\lib\\site-packages']
Server time:    Mon, 13 May 2019 14:01:15 -0400

1 Ответ

0 голосов
/ 14 мая 2019

Разобрался, наконец.Просто.Мне нужно было запустить pym manage.py makemigrations и ... мигрировать с моим именем приложения (в моем случае это DEC).В противном случае эти функции выполняются только для базовых элементов данных django cms system / admin.

...