【问题标题】:Django: How display effectively data in my template?Django:如何在我的模板中有效地显示数据?
【发布时间】:2019-02-01 09:55:04
【问题描述】:

我以数字的形式将用户的可用性保存在我的数据库中。 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')

【问题讨论】:

    标签: python css django django-templates


    【解决方案1】:

    生成图片名称

    我们可以通过将天的配置“加入”在一起来“生成”图像 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 }}">

    那么你只需要生成八张图片:000.pdf001.pdf010.pdf

    【讨论】:

      【解决方案2】:

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

      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 template language doc

      【讨论】:

        猜你喜欢
        • 2016-05-06
        • 1970-01-01
        • 2021-04-21
        • 2012-03-18
        • 1970-01-01
        • 2021-11-02
        • 1970-01-01
        • 2014-11-12
        • 1970-01-01
        相关资源
        最近更新 更多