Django:如何在我的模板中有效地显示数据?



我以数字的形式将用户可用性保存在数据库中。1个用户可用,0个不可用。例如,如果用户周一早上和晚上有空,但在白天没有,在我的数据库中我会有">101" 现在我想向我的用户展示他们的可用性。 我的想法是,对于每种情况,我将创建并向他们展示不同的图像。 不幸的是,7天的可能性太多了。

我的问题是如何在模板中有效地显示这些数据?

我开始写我的观点,这里是:

if request.user.is_authenticated:
try:
name = coach.objects.get(user=request.user)
except coach.DoesNotExist:
name = coach(user=request.user)
objs = Lesson.objects.all().filter(mycoach = name)
args = {'objs': objs}
if name.monday=="111" and name.tuesday=="111" and name.wednesday=="111" and name.thursday=="111" and name.friday=="111" and name.saturday=="111" and name.sunday=="111" :
args['image_url'] = static('img/111111111111111111111.pdf')
if name.monday=="011" and name.tuesday=="111" and name.wednesday=="111" and name.thursday=="111" and name.friday=="111" and name.saturday=="111" and name.sunday=="111" :
args['image_url'] = static('img/011111111111111111111.pdf')
messages.add_message(request, messages.INFO, 'Welcome to your profile')
return render(request, 'Task.html', args)
else:
return render(request, 'home.html')

生成映像名称

我们可以通过将日期的配置"连接"在一起来"生成"图像 URL 的名称,例如:

args['image_url'] = static(
'img/{}{}{}{}{}{}{}.pdf'.format(
name.monday,
name.tuesday,
name.wednesday,
name.thursday,
name.friday,
name.saturday,
name.sunday
)
)

但这仍然意味着您需要生成221=2'097'152图像。

生成图像列表

所以我想知道显示七个图像(一个图像一个接一个(是否更有效,因此将其视为七个图像的列表,每个图像有八种可能性。因此,我们将视图"交付"为:

args['image_urls'] = {
k: static('img/{}.pdf'.format(getattr(name, k)))
for k in ['monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday']
}

这意味着模板看起来像这样:

<!-- my schedule -->
<img src="{{ image_urls.monday }}">
<img src="{{ image_urls.tuesday }}">
<img src="{{ image_urls.wednesday }}">
<img src="{{ image_urls.thursday }}">
<img src="{{ image_urls.friday }}">
<img src="{{ image_urls.saturday }}">
<img src="{{ image_urls.sunday }}">

然后你只需要生成 eigh 图像:000.pdf001.pdf010.pdf等。

如果您已经准备好所有可能的图像,则可以像这样获取图像路径:

args['image_url'] = static('img/{}{}{}{}{}{}{}.pdf'.format(
name.monday, name.tuesday, name.wednesday, name.thursday, name.friday, name.saturday, name.sunday
))

或者你可以在模板中用 HTML/CSS/javascript 做一些动态表示。使用访问模板中的数据的 js 库为一些表格着色或生成一些图形:{{name.monday.0}}周一早上的可用性等......

请参阅 Django 模板语言文档。

最新更新