Глядя на то, что у вас есть, я не уверен, что вы дали вашему плагину правильную модель, но вид !?И класс формы не класс формы, form_class = contact_form
, но что такое contact_form
?Вам нужно, чтобы это был класс вашей формы, например
class ContactForm(forms.Form):
name = forms.CharField(label='Your name', max_length=100)
email = forms.EmailField(label='Your email', max_length=100)
class ContactFormView(FormView):
template = '/ContactForm/ContactForm.html'
form_class = ContactForm
success_url = reverse_lazy('success-page')
И если у вас есть форма, которую вы хотите, чтобы ваш плагин отображал, вы должны указать ей, что делать ...
from cms.models.pluginmodel import CMSPlugin
class ContactFormPlugin(CMSPluginBase):
model = CMSPlugin
render_template = '/ContactForm/ContactForm.html'
name = 'Contact Form'
allow_children = False
def render(self, context, instance, placeholder):
context = super(ContactFormPlugin, self).render(context, instance, placeholder)
context['form'] = ContactForm()
return context
Однако вы работаете с плагином CMS, поэтому вы вообще не определяете View
для плагина.Я думаю, вы могли бы заставить это делать то, что вы пытаетесь сделать, но представление не хочет наследовать CMSPlugin
, потому что вы просто хотите, чтобы представление получало данные из плагина.
Если вам нужно определитьзатем вы создаете приложение, для которого в CMS требуется Apphook
, а не плагин.(Технически вы можете публиковать на URL-адрес без Apphook, но зависит от того, насколько вам нужна интеграция с CMS)
Существует отличный пример, который начинается с публикации плагина в представлении, а затем переходит в интеграцию приложения, что возможноВот;http://docs.django -cms.org / ен / последний / Введение / plugins.html