【问题标题】:Display time stored in database in HTML (django)以 HTML (django) 显示存储在数据库中的时间
【发布时间】:2017-04-27 20:20:37
【问题描述】:

我正在使用 Django 构建一个巴士预订网站。用户填写From、To、巴士类型(普通或沃尔沃)和日期。结果显示该特定日期该路线上可用的巴士。我制作了三张表——巴士、路线和频率。您可以在此处查看我的 models.py 和 views.py -https://dpaste.de/Oi6a 我将日期转换为一周中的相应日期。我已经过滤掉了公交车,但是,我想在模板上显示时间。这是我的views.py代码的一部分:

def select(request):

    bus_type = request.GET.get('bus_type')
    bus_from = request.GET.get('bus_from')
    bus_to = request.GET.get('bus_to')

    date_string = request.GET.get('date')
    date = datetime.strptime(date_string, '%Y-%m-%d')

    day = calendar.day_name[date.weekday()]

    kwargs = { '{0}__range'.format(day): ["00:00:00", "23:59:59"],}


    qs = Frequency.objects.filter(bus__type_of_bus=bus_type, bus__route__location_from=bus_from, bus__route__location_to=bus_to, **kwargs)

    context = {'qs': qs, 'date':date_string,}
    template = 'select.html'
    return render(request, template, context)

如您所见,qs 过滤可用的总线,然后传递给模板。这是模板的一部分:

<div id="pricing-table" class="clear">
    {% for info in qs %}
    <div class="price_block">
        <h3>{{ info.bus.type_of_bus }}<span>{% if info.bus.type_of_bus == 'Volvo' %} Rs 550 {% else %}Rs 330 {% endif %}</span></h3>
        <a href="{% url 'book:seats' %}"rel="follow" rel="noreferrer" class="signup" type="submit">Book</a>
        <ul>
            <li><b>Bus Number -</b> {{ info.bus.bus_number }}</li>
            <li><b>Route -</b> {{ info.bus.route }}</li>
            <li><b>Date -</b> {{ date }}</li>
            <li><b>Time -</b> {{ info.day }}</li>
        </ul>
    </div>

在这个 HTML 文件的最后一行,我添加了 info.day。我想要的是这显示巴士在给定日期的运行时间。例如,如果有人在 4 月 29 日搜索公共汽车。 4 月 29 日将转换为相应的日期,即星期五。频率表有'Monday'、'Tuesday'、'Wednesday'、'Thursday'、'Friday'、'Saturday'和'Sunday'作为属性,这些都是TimeField()。 qs 过滤总线并传递给模板。我希望 {{ info.day }} 显示公共汽车运行的时间。相反,它什么也没显示。但是当我将 {{ info.day }} 更改为 {{ info.Friday}} 时,它开始显示时间。每次搜索公共汽车时,如何在无需手动更改 {{ info.(here) }} 中的日期的情况下显示时间。我没有说得很清楚,但我希望你能理解。如果你不知道,请告诉我。

【问题讨论】:

    标签: html django templates


    【解决方案1】:

    您可以为您创建一个自定义模板标签,并在模型上创建一个方法。

    我还没有测试过这段代码,但这应该可以在有或没有小的调整的情况下工作

    将此方法添加到Frequency 模型中:

    def get_day_info(self, date):
            # Where date_string would be a datestring
            date = datetime.strptime(date_string, '%Y-%m-%d')
            day = calendar.day_name[date.weekday()]
            info_time = getattr(self, '{}'.format(day))
            return info_time
    

    并将其注册为模板标签。

    @register.simple_tag
    def get_day_info(info, date):
        return info.get_day_info(date)
    

    你可以在模板中这样调用它:

    <li><b>Time -</b> {% get_day_info info {{ date }} %}</li>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-03
      • 2012-04-17
      • 1970-01-01
      • 2013-08-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多