标签: django-templates

迭代模板中的模型实例字段名称和值

我正在尝试创建一个基本模板来显示所选实例的字段值及其名称.可以将其视为表格格式中该实例值的标准输出,其中第一列中的字段名称(特别是如果在字段上指定了verbose_name)和第二列中该字段的值.

例如,假设我们有以下模型定义:

class Client(Model):
    name = CharField(max_length=150)
    email = EmailField(max_length=100, verbose_name="E-mail")
Run Code Online (Sandbox Code Playgroud)

我希望它在模板中输出如此(假设具有给定值的实例):

Field Name      Field Value
----------      -----------
Name            Wayne Koorts
E-mail          waynes@email.com
Run Code Online (Sandbox Code Playgroud)

我想要实现的是能够将模型的实例传递给模板,并能够在模板中动态迭代它,如下所示:

<table>
    {% for field in fields %}
        <tr>
            <td>{{ field.name }}</td>
            <td>{{ field.value }}</td>
        </tr>
    {% endfor %}
</table>
Run Code Online (Sandbox Code Playgroud)

是否有一个整洁,"Django批准"的方式来做到这一点?这似乎是一项非常常见的任务,我需要经常为这个特定的项目做这件事.

python django django-templates

175
推荐指数
12
解决办法
16万
查看次数

将模板变量渲染为HTML

我使用'messages'接口将消息传递给用户,如下所示:

request.user.message_set.create(message=message)
Run Code Online (Sandbox Code Playgroud)

我想在我的{{ message }}变量中包含html 并在不转义模板中的标记的情况下呈现它.

django django-templates

171
推荐指数
6
解决办法
14万
查看次数

如何在django模板中访问字典元素?

我在模板中有这个代码,我想打印出每个选项得到的票数.投票只是字典而选择是模型对象.

{% for choice in choices %}
    {{choice.choice}} - {{votes[choice.id]}} <br />
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

它引发了一条异常,显示"无法解析余数"

python django django-templates

170
推荐指数
7
解决办法
17万
查看次数

如何在Django模板中获取我的网站的域名?

如何从Django模板中获取当前站点的域名?我试过看标签和过滤器,但没有.

python django django-templates

148
推荐指数
12
解决办法
12万
查看次数

如何使用Django模板检查集合的大小?

我的Django模板中有一个列表.我想只在列表大小大于零时才做某事.我怎么检查这个?

我试过myList | length和myList | length_is但是没有成功.我到处搜索过,没看到任何例子.

django django-templates

127
推荐指数
6
解决办法
11万
查看次数

创建动态选择字段

我在尝试理解如何在django中创建动态选择字段时遇到了一些麻烦.我有一个模型设置类似于:

class rider(models.Model):
     user = models.ForeignKey(User)
     waypoint = models.ManyToManyField(Waypoint)

class Waypoint(models.Model):
     lat = models.FloatField()
     lng = models.FloatField()
Run Code Online (Sandbox Code Playgroud)

我要做的是创建一个选择字段,其值是与该骑手相关联的航点(可以是登录的人).

目前我在我的表单中覆盖init,如下所示:

class waypointForm(forms.Form):
     def __init__(self, *args, **kwargs):
          super(joinTripForm, self).__init__(*args, **kwargs)
          self.fields['waypoints'] = forms.ChoiceField(choices=[ (o.id, str(o)) for o in Waypoint.objects.all()])
Run Code Online (Sandbox Code Playgroud)

但所有这一切都是列出所有航点,它们与任何特定的骑手没有联系.有任何想法吗?谢谢.

python django django-templates django-forms

127
推荐指数
3
解决办法
11万
查看次数

如何在django模板中重复"块"

我想在同一个django模板中使用相同的{%block%}两次.我希望此块在我的基本模板中出现多次:

# base.html
<html>
    <head>
        <title>{% block title %}My Cool Website{% endblock %}</title>
    </head>
    <body>
        <h1>{% block title %}My Cool Website{% endblock %}</h1>
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

然后扩展它:

# blog.html
{% extends 'base.html' %}
{% block title %}My Blog{% endblock %}

# pictures.html
{% extends 'base.html' %}
{% block title %}My Pictures{% endblock %}

# cats.html
{% extends 'base.html' %}
{% block title %}My Cats{% endblock %}
Run Code Online (Sandbox Code Playgroud)

我会得到一个例外,因为Django希望块只出现一次:

在/的TemplateSyntaxError

名称为"title"的'block'标记不止一次出现

一个快速而肮脏的解决方案是将块标题复制到title1title2:

# blog.html
{% …
Run Code Online (Sandbox Code Playgroud)

django dry django-templates

122
推荐指数
8
解决办法
4万
查看次数

Django模板:选择的详细版本

我有一个模特:

from django.db import models

CHOICES = (
    ('s', 'Glorious spam'),
    ('e', 'Fabulous eggs'),
)

class MealOrder(models.Model):
    meal = models.CharField(max_length=8, choices=CHOICES)
Run Code Online (Sandbox Code Playgroud)

我有一个表格:

from django.forms import ModelForm

class MealOrderForm(ModelForm):
    class Meta:
        model = MealOrder
Run Code Online (Sandbox Code Playgroud)

我想使用formtools.preview.默认模板打印选择的短版本('e'而不是'Fabulous eggs'),因为它使用

{% for field in form %}
<tr>
<th>{{ field.label }}:</th>
<td>{{ field.data }}</td>
</tr>
{% endfor %}.
Run Code Online (Sandbox Code Playgroud)

我想要一个像上面提到的一般模板,但是打印'Fabulous eggs'代替.

[因为我怀疑真正的问题在哪里,我为所有人加粗了:)]

我知道如何以一种本身丑陋的方式获得一个选择的冗长版本:

{{ form.meal.field.choices.1.1 }}
Run Code Online (Sandbox Code Playgroud)

真正的痛苦是我需要得到所选择的选择,而我想到的唯一方法是迭代选择和检查{% ifequals currentChoice.0 choiceField.data %},这甚至更加丑陋.

可以轻松完成吗?或者它需要一些模板标签编程?难道这不应该在django中可用吗?

django django-templates django-forms

122
推荐指数
6
解决办法
6万
查看次数

如何在django模板中的字典中迭代字典?

我的字典看起来像这样(字典中的字典):

{'0':{'selected_unit':,'cost':十进制('10 .0000'),'unit__name_abbrev':'u'G','supplier_ supplier':u"Steve's Meat Locker",'price':十进制(' 5.00'),'供应商 _地址':u'No\r \naddress at here','selected_unit_amount':u'2','city_ name':u'Joburg,Central','supplier _phone_number':u'02299944444', 'supplier_ website':无,'供应商 _price_list':u'','supplier_ email':u'ss.sss @ sssss.com','unit _name':u'Gram','name':u'Rump Bone "}}

现在我只是想在我的模板上显示信息,但我正在努力.我的模板代码如下:

{'0': {
    'chosen_unit': <Unit: Kg>,
    'cost': Decimal('10.0000'),
    'unit__name_abbrev': u'G',
    'supplier__supplier': u"Steve's Meat Locker",
    'price': Decimal('5.00'),
    'supplier__address': u'No\r\naddress here',
    'chosen_unit_amount': u'2',
    'city__name': u'Joburg, Central',
    'supplier__phone_number': u'02299944444',
    'supplier__website': None,
    'supplier__price_list': u'',
    'supplier__email': u'ss.sss@ssssss.com',
    'unit__name': u'Gram',
    'name': u'Rump Bone',
}}
Run Code Online (Sandbox Code Playgroud)

它只是在我的模板上显示'0'?

我也尝试过:

{% if landing_dict.ingredients %}
  <hr>
  {% for ingredient in landing_dict.ingredients %}
    {{ ingredient }}
  {% endfor %}
  <a …
Run Code Online (Sandbox Code Playgroud)

python django dictionary django-templates

117
推荐指数
2
解决办法
10万
查看次数

Django TemplateSyntaxError - 'staticfiles' 不是注册的标签库

升级到 Django 3.0 后,我得到以下信息TemplateSyntaxError

In template /Users/alasdair//myproject/myapp/templates/index.html, error at line 1
'staticfiles' is not a registered tag library. Must be one of: admin_list admin_modify admin_urls cache i18n l10n log static tz
Run Code Online (Sandbox Code Playgroud)

这是我的模板

{% load staticfiles %}
<img src="{% static 'my_image.html' %}">
Run Code Online (Sandbox Code Playgroud)

python django django-templates django-3.0

112
推荐指数
4
解决办法
9万
查看次数