models.py
from django.db import modelsfrom django.utils.text import slugifyfrom django.urls import reversefrom CMS.models.fIElds import PlaceholderFIEldfrom djangoCMS_text_ckeditor.fIElds import HTMLFIEldclass Programme(models.Model): name = models.CharFIEld(max_length=60,unique=True) slug = models.SlugFIEld() icon = models.CharFIEld(max_length=50,unique=True) introduction = HTMLFIEld() overvIEw = PlaceholderFIEld( 'programme_overvIEw',related_name='programmes_overvIEw' ) def __str__(self): return self.name def get_absolute_url(self): return reverse( 'programmes:programme-detail',kwargs={'slug': self.slug} ) def save(self,*args,**kwargs): if not self.pk: self.slug = slugify(self.name) super(Programme,self).save(*args,**kwargs)
templateTags / programmes_Tags
from django import templatefrom ..models import Programmeregister = template.library()@register.inclusion_tag('programmes/programme_List.HTML')def programme_List(): programmes = Programme.objects.all() return {'programmes': programmes}
在模板中,我使用CMS_Tags中的render_model,因为编辑器应该能够编辑前端中的内容.这是模板:
模板/程序/ programme_List.HTML
{% load CMS_Tags %}{% for programme in programmes %} <div > <div > <i ></i> <h3> <a href="{% url 'programmes:programme-detail' programme.slug %}"> {{ programme.name }} </a> </h3> <p > {% render_model programme 'introduction' %} </p> </div> </div>{% endfor %}
该标记现在用于主页的模板中:
{% load programmes_Tags %}{% programme_List %}
当我打开主页时,它会抛出一个错误:
KeyError: 'request'
显然,render_model标记需要访问请求.当我尝试更改模板标签时:
@register.inclusion_tag('programmes/programme_List.HTML',takes_context=True)def programme_List(context): programmes = Programme.objects.all() context.update({'programmes': programmes}) return context
请求作为RequestContext的一部分传递,但随后抛出此错误:
ValueError: dictionary update sequence element #1 has length 1; 2 is required
我该如何正确更新RequestContext?
如果使用templatetag不是正确的方法,请指出什么是更好的解决方案.
@register.inclusion_tag('programmes/programme_List.HTML',takes_context=True)def programme_List(context): request = context['request'] programmes = Programme.objects.all() return {'programmes': programmes,'request': request}总结
以上是内存溢出为你收集整理的python – 使用djangoCMS render_model的自定义包含模板标签全部内容,希望文章能够帮你解决python – 使用djangoCMS render_model的自定义包含模板标签所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)