向Djangocms添加自定义占位符

2024-09-27 23:16:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试创建一个自定义占位符来添加一个管理员可编辑的网站部分。Django-cms' documentation对于要添加它的操作非常通用。在

占位符位于一个名为联系人的单独应用程序中,该应用程序已经添加到设置.py文件

以下是我目前为止的代码(跳过导入以减少冗长):

模型.py

class ContactsPlaceholder(models.Model):
    phone = models.CharField(max_length=100)
    email = models.CharField(max_length=100)
    address = models.TextField(max_length=700)
    # your fields
    my_placeholder = PlaceholderField('contacts_contactsplaceholder')
    # your methods

    def __unicode__(self):
        return "Contacts Placeholder"

视图.py

^{pr2}$

联系人.html

{% extends "base.html" %}
{% load cms_tags %}
{% block content %}
<div>
  <h1>Contacts</h1>

  {% placeholder "contacts_placeholder" or %}
   <p>Placeholder is empty</p>
  {% endplaceholder %}
</div>
{% endblock content %}

最后,管理员py

class ContactsPlaceholderAdmin(PlaceholderAdminMixin, admin.ModelAdmin):
    # Editable fields
    frontend_editable_fields = ("phone", "email", "address")
    # Form fields order and sections
    fieldsets = [
        (None,{"fields" : ["phone", "email", "address"]})
    ]

admin.site.register(ContactsPlaceholder, ContactsPlaceholderAdmin)

有了这个配置,在运行

^{pr5}$之后,我会在html响应中得到“Placeholder is empty”,当然,使用标准的前端编辑器,占位符是不可编辑的,这是所需的行为。

转到127.0.0.1:8000/admin/我可以看到“Contacts Placeholder”表,但是当我单击它或尝试添加项目时,确实会出现以下错误:

OperationalError at /us/admin/contacts/contactsplaceholder/
no such column: contacts_contactsplaceholder.phone

Tags: pyfieldsadminaddressmodelsemailhtmlphone
1条回答
网友
1楼 · 发布于 2024-09-27 23:16:50

如果contacts()视图是通过app钩子呈现的,那么在模板中使用{% placeholder "contacts_placeholder" %}将不起作用。在

在通过AppHook连接到CMS的应用程序中使用占位符时,必须使用{% static_placeholder "MyPlaceholder" %},而不是通常的{% Placeholder "MyPlaceholder" %}

如果你有一个应用或插件,你已经在其中创建了一个占位符字段,那么在你的模板中,你需要下面的标签

{% render_placeholder instance.placeholderfieldname %}

相关问题 更多 >

    热门问题