我以数字的形式将用户可用性保存在数据库中。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.pdf
、001.pdf
、010.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 模板语言文档。