永发信息网

django里面template能定义变量么

答案:2  悬赏:10  手机版
解决时间 2021-03-04 21:26
django里面template能定义变量么
最佳答案
没有python本身那么方便的语句 需要自己在循环里加判断,比如这样: {% for item in list %} {% ifequal item var %} .... do somthing .... {% endifequel %} {% endfor %} 不过我还是建议尽量在模板里少做一些事情,模板毕竟不是用来提供计算...
全部回答
django model中使用多语言支持的快速方法, 该方法通过建立自定义的template tag 选取model中重复的语言field来达到多语言显示的目的. 假设我们有这样一个models.py, 某一个model中包含多个重复的field, 每个重复的field都是用来保存其对应的显示语言: class myobject(models.model): name = models.charfield(max_length=50) title_en = models.charfield(max_length=50) title_es = models.charfield(max_length=100) title_fr = models.charfield(max_length=100) description_en = models.charfield(max_length=100) description_es = models.charfield(max_length=100) description_fr = models.charfield(max_length=100) class myotherobject(models.model): name = models.charfield(max_length=50) content_en = models.charfield(max_length=200) content_es = models.charfield(max_length=200) content_fr = models.charfield(max_length=200) 注意, 我们将下划线和语言代码作为后缀放在对应的field后面, 这将作为一个语言的查找标记. 然后我们在settings.py中添加需要翻译的field名: translation_fields = ('title', 'description', 'content') 在项目目录中添加templatetags目录(不要忘了怎家__init__.py), 并在其中建立lazy_tags.py: from django import template from settings import translation_fields register = template.library() class localizedcontent(template.node): def __init__(self, model, language_code): self.model = model self.lang = language_code def render(self, context): model = template.resolve_variable(self.model, context) lang = template.resolve_variable(self.lang, context) for f in translation_fields: try: setattr(model, f, getattr(model, '%s_%s' % (f, lang))) except attributeerror: pass return '' @register.tag(name='get_localized_content') def get_localized_content(parser, token): bits = list(token.split_contents()) if len(bits) != 3: raise template.templatesyntaxerror("'get_localized_content' tag takes exactly 2 arguments") return localizedcontent(model=bits[1], language_code=bits[2]) 为了在template中使用自定义的tag, 我们首先载入: {% load lazy_tags %} 然后使用自定义tag, 传入object和语言代码, 取的翻译. 比如西班牙语: {% get_localized_content object 'es' %} 此时, 如果没有语言代码传入, 那么无法使用obj.description调用某一个语言field. 所以我们配合django.core.context_processors.request, context processor一起使用: template_context_processors = ( ... 'django.core.context_processors.request', ) 我们就能在template中这样使用: {% get_localized_content object request.language_code %}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
考驾照科目一了,身份证又过期了,来不及办临
戴家湾村怎么去啊,有知道地址的么
荣成新城一品的房产证啥时候能办下来
赞美“大象”的诗词有哪些?
形容一个人“不讲究”,是什么意思?
李公桥村这个地址在什么地方,我要处理点事
圣恩熙时尚真皮女鞋怎么样
罗马风情婚纱摄影地址在哪,我要去那里办事
硅油的主要成分是什么
【闭月羞花】...句话倾过倾城之容貌不及你的
九把刀的<猎命师传奇>结局是什么啊?
乌拉特前旗社保局在什么地方啊,我要过去处理
网上买的那些外国邮票几百枚可以在国内用来寄
如何摘去文竹生长点
高粱米和姜半夏的功效与作用机理和
推荐资讯
邺是什么意思
生活防水英语怎么表达
车间宣传安全生产的话,有哪些具体内容可以宣
暑的近义字是什么
酒喝干在斟满来自哪首歌
求助各位大神,谁能以“启航”二字为开头给编
巴嘎尖山在哪里啊,我有事要去这个地方
申请美国研究生我成绩单上需要有绩点成绩吗
用空调保鲜鲜花还需要装加湿器吗
好胎屋管家APP哪里可以下载?
怎样用bat做闹钟?
朋友老是在说他自己的事情,说我的事情时确不
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?