我以数字形式将用户的可用性保存在数据库中。 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')
答案 0 :(得分:2)
我们可以通过将日期的配置“结合”在一起来“生成”图像URL的名称,例如:
args['image_url'] = static(
'img/{}{}{}{}{}{}{}.pdf'.format(
name.monday,
name.tuesday,
name.wednesday,
name.thursday,
name.friday,
name.saturday,
name.sunday
)
)
但这仍然意味着您将需要生成 2 21 = 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
等
答案 1 :(得分:1)
如果您已经准备好所有可能的图像,则可以这样获得图像路径:
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}}
,以获取周一上午的可用时间,等等...