我正在尝试创建一个基本模板来显示所选实例的字段值及其名称.可以将其视为表格格式中该实例值的标准输出,其中第一列中的字段名称(特别是如果在字段上指定了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批准"的方式来做到这一点?这似乎是一项非常常见的任务,我需要经常为这个特定的项目做这件事.
我使用'messages'接口将消息传递给用户,如下所示:
request.user.message_set.create(message=message)
Run Code Online (Sandbox Code Playgroud)
我想在我的{{ message }}变量中包含html 并在不转义模板中的标记的情况下呈现它.
我在模板中有这个代码,我想打印出每个选项得到的票数.投票只是字典而选择是模型对象.
{% for choice in choices %}
{{choice.choice}} - {{votes[choice.id]}} <br />
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
它引发了一条异常,显示"无法解析余数"
如何从Django模板中获取当前站点的域名?我试过看标签和过滤器,但没有.
我的Django模板中有一个列表.我想只在列表大小大于零时才做某事.我怎么检查这个?
我试过myList | length和myList | length_is但是没有成功.我到处搜索过,没看到任何例子.
我在尝试理解如何在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)
但所有这一切都是列出所有航点,它们与任何特定的骑手没有联系.有任何想法吗?谢谢.
我想在同一个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'标记不止一次出现
一个快速而肮脏的解决方案是将块标题复制到title1和title2:
# blog.html
{% …Run Code Online (Sandbox Code Playgroud) 我有一个模特:
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中可用吗?
我的字典看起来像这样(字典中的字典):
{'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) 升级到 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)