【问题标题】:how to integrate django app forms in djangocms plugins如何在 djangocms 插件中集成 django 应用程序表单
【发布时间】:2015-04-21 04:13:52
【问题描述】:

如果用户填写表格,我编写了一个简单的 django 应用程序来存储电子邮件地址。一切正常,但是当我按照tutorial 将我的应用程序集成到 django-cms 中时,我注意到我的表单没有像我将它移到 django-cms 之前那样显示在插件中。 {% csrf_token %}{{ form.as_p }} 似乎在插件中不起作用。 有谁知道为什么?

这里是我的 cms_plugin.py

from cms.plugin_base import CMSPluginBase
from cms.plugin_pool import plugin_pool
from newsletter_djangocms.models import NewsletterPlugin
from django.utils.translation import ugettext as _


class CMSNewsletterPlugin(CMSPluginBase):
    model = NewsletterPlugin 
    module = _("Recipients")
    name = _("Newsletter Plugin")  
    render_template = "newsletter_djangocms/add.html"  
    def render(self, context, instance, placeholder):
        context.update({'instance': instance})
        return context

plugin_pool.register_plugin(CMSNewsletterPlugin) 

主应用的models.py(不是CMSPlugin)

from django.db import models

class Recipient(models.Model):
    adress = models.EmailField(max_length=100)
    name = models.CharField(max_length=100)
    lastname = models.CharField(max_length=100)
    def __str__(self):
            return self.adress

和 forms.py(也是主应用程序)

from django import forms
from .models import Recipient

class NewsletterForm(forms.ModelForm):

    class Meta:
        model = Recipient
        fields = ('adress','name', 'lastname',)

哪个文件可能是错误的,或者我在哪里可以找到有用的帖子或其他东西。我在这里找到的唯一东西是this。但这对我不起作用。我会很高兴有一个好的小费。

【问题讨论】:

  • 你有没有机会描述一下当你展示你的插件时会发生什么?另外,还有一些其他问题,您是否创建了任何有效的插件?哪个版本的 Python/Django/django CMS?你能分享你的模板标记吗?在处理表单时会绊倒新 CMSPlugin 用户的一件事是,您需要了解插件中的表单通常无法 POST 到自身,因为它没有唯一的 URL,并且单个插件可能会出现很多次同一页面,因此,通常发布很复杂。但是,使用 AJAX 发布的效果很好,正如 @m15hbah 在下面发布的链接中所指出的那样。
  • 好吧 {% csrf_token %}{{ form.as_p }} 我的表单不只显示提交按钮。是的,我之前带来了 2 个其他应用程序与 django-cms 一起使用,但是表单没有问题,因为它们只是在 django-admin 中。现在我需要它们可供我网站的访问者使用。我使用了 django 1.7、python2.7 和 django-cms 3.0。 Atm 我正在关注 m15hbah 的链接,但需要一点。谢谢回答
  • Lepus:你有没有发现,如何让模板中的表单{{ form.as_p }} 正确呈现?我猜渲染上下文需要为此提供一些信息。 mishbah 的答案相当指向 djangocms-forms。正如我希望理解的那样,它不是为第三方应用程序编写插件。

标签: django django-forms django-templates django-cms


【解决方案1】:

关于如何将表单集成到插件中的非常好的示例:

https://github.com/mkoistinen/staff-app-demo/tree/master/contacts

这里有一个非常好的视频教程:

http://youtu.be/XIdClQgYdzw

【讨论】:

    猜你喜欢
    • 2018-01-06
    • 2022-01-20
    • 1970-01-01
    • 2015-01-29
    • 2012-05-27
    • 2015-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多