Plugins DjangoCMS在多个自定义插件中填充模型的数据
我正在使用DjangoCMS进行网站开发。我需要在网站的多个地方使用公司的电话号码和电子邮件。所以我想用下面的模型编写一个自定义插件Plugins DjangoCMS在多个自定义插件中填充模型的数据,plugins,content-management-system,django-cms,Plugins,Content Management System,Django Cms,我正在使用DjangoCMS进行网站开发。我需要在网站的多个地方使用公司的电话号码和电子邮件。所以我想用下面的模型编写一个自定义插件 from cms.models.pluginmodel import CMSPlugin from django.db import models # Create your models here. class ContactDetails(CMSPlugin): phone_number = models.CharField(max_length=
from cms.models.pluginmodel import CMSPlugin
from django.db import models
# Create your models here.
class ContactDetails(CMSPlugin):
phone_number = models.CharField(max_length=50,default="000000000")
email_id = models.CharField(max_length=50,default="Enter the Email")
address = models.CharField(max_length=200,default="Enter Address")
以及下面的cms_plugins.py
from cms.plugin_pool import plugin_pool
from cms.models.pluginmodel import CMSPlugin
from django.utils.translation import ugettext_lazy as _
from .models import ContactDetails
@plugin_pool.register_plugin
class ContactDetailsPluginFooter(CMSPluginBase):
model = ContactDetails
name = _("Contact Plugin Footer")
render_template = "contact_details_footer.html"
cache = False
def render(self, context, instance, placeholder):
context = super(ContactDetailsPluginFooter, self).render(context,instance, placeholder)
return context
@plugin_pool.register_plugin
class ContactDetailsPluginHeader(CMSPluginBase):
model = ContactDetails
name = _("Contact Plugin Header")
render_template = "contact_details_header.html"
cache = False
def render(self, context, instance, placeholder):
context = super(ContactDetailsPluginHeader, self).render(context,instance, placeholder)
return context
我有如下模板
联系方式\u详情\u footer.html
<div class="container">
<div class="row">
<div class="col-sm-3 col-md-3">
<div class="f-h-content">
<h3>Call Us Now !</h3>
<h2>{{instance.phone_number}}</h2>
<p><a href="#">24/7 Available</a></p>
</div>
</div>
<div class="col-sm-3 col-md-3">
<div class="f-h-content">
<h3>Send Us Message !</h3>
<h2>{{instance.email_id}}</h2>
<p><a href="#">24/7 Available</a></p>
</div>
</div>
<div class="col-sm-6 col-md-6">
<div class="f-h-content">
<h3>Visit Our Dubai Office !</h3>
<h2>{{instance.address}} </h2>
<p><a href="#">View Map</a></p>
</div>
</div>
</div>
</div>
<div class="header-contact">
<ul>
<li><span>Phone :</span> {{instance.phone_number}}</li>
<li><span>Email :</span> {{instance.email_id}} </li>
<li><a href="contact-us.html">Free Consultation</a></li>
</ul>
</div>
现在给我们打电话!
{{实例.电话号码}
给我们发信息!
{{instance.email_id}
访问我们的迪拜办事处!
{{instance.address}
联系人详细信息\u header.html
<div class="container">
<div class="row">
<div class="col-sm-3 col-md-3">
<div class="f-h-content">
<h3>Call Us Now !</h3>
<h2>{{instance.phone_number}}</h2>
<p><a href="#">24/7 Available</a></p>
</div>
</div>
<div class="col-sm-3 col-md-3">
<div class="f-h-content">
<h3>Send Us Message !</h3>
<h2>{{instance.email_id}}</h2>
<p><a href="#">24/7 Available</a></p>
</div>
</div>
<div class="col-sm-6 col-md-6">
<div class="f-h-content">
<h3>Visit Our Dubai Office !</h3>
<h2>{{instance.address}} </h2>
<p><a href="#">View Map</a></p>
</div>
</div>
</div>
</div>
<div class="header-contact">
<ul>
<li><span>Phone :</span> {{instance.phone_number}}</li>
<li><span>Email :</span> {{instance.email_id}} </li>
<li><a href="contact-us.html">Free Consultation</a></li>
</ul>
</div>
- 电话:{{实例.电话号码}
- 电子邮件:{{instance.Email_id}
但在这里,当我每次添加相同的时,我必须添加电话和电子邮件id和地址。我应该怎么做才能让它输入一次并使用多个插件。您提到的问题是故意的,因为每个插件都是存储在数据库中的唯一模型实例 我们可以创建一个独特的插件实例,链接到ContactDetails的单个实例。为此,我们必须创建一个外键关系,以便ContactDetails实例可以链接到许多插件 我们还可以使用Django管理内联线来创建ContactDetails并将其附加到插件 型号.py
从cms.models.pluginmodel导入CMSPlugin
从django.db导入模型
类联系人详细信息(models.Model):
电话号码=models.CharField(最大长度=50,默认值=“000000000”)
email\u id=models.CharField(最大长度=50,默认值=“输入电子邮件”)
address=models.CharField(最大长度=200,默认值=“输入地址”)
类别ContactDetailsPluginModel(CMSPlugin):
唯一的插件字段=models.CharField(最大长度=150)
联系人=models.ForeignKey(
“联系人”,null=True,blank=True,on_delete=models.CASCADE)
定义(自我):
将self.unique_返回到_plugin_字段
cms\u plugins.py
类别ContactDetailsLine(管理员StackedLine):
型号=联系人详细信息
@plugin\u pool.register\u插件
类别ContactDetailsPluginHeader(CMSPluginBase):
型号=ContactDetailsPluginModel
名称=(“联系人插件标题”)
render\u template=“contact\u details\u header.html”
cache=False
内联线=[
联系方式详情,
]
def呈现(自身、上下文、实例、占位符):
context=super(ContactDetailsPluginHeader,self).render(context,instance,placeholder)
返回上下文
您的模板现在可以使用以下关系进行访问:instance.contact.email\u id
联系人详细信息\u header.html
<div class="container">
<div class="row">
<div class="col-sm-3 col-md-3">
<div class="f-h-content">
<h3>Call Us Now !</h3>
<h2>{{instance.phone_number}}</h2>
<p><a href="#">24/7 Available</a></p>
</div>
</div>
<div class="col-sm-3 col-md-3">
<div class="f-h-content">
<h3>Send Us Message !</h3>
<h2>{{instance.email_id}}</h2>
<p><a href="#">24/7 Available</a></p>
</div>
</div>
<div class="col-sm-6 col-md-6">
<div class="f-h-content">
<h3>Visit Our Dubai Office !</h3>
<h2>{{instance.address}} </h2>
<p><a href="#">View Map</a></p>
</div>
</div>
</div>
</div>
<div class="header-contact">
<ul>
<li><span>Phone :</span> {{instance.phone_number}}</li>
<li><span>Email :</span> {{instance.email_id}} </li>
<li><a href="contact-us.html">Free Consultation</a></li>
</ul>
</div>
- 电话:{{instance.contact.Phone_number}
- 电子邮件:{{instance.contact.Email_id}