【问题标题】:View does not update the current date (Django)查看不更新当前日期(Django)
【发布时间】:2020-07-30 00:07:49
【问题描述】:

在视图中调用get_week实现。 直接打印为模板的'now'正常显示,但是通过模块输出的get_week的结果是作为1周前的值输出的。 如果您修复了类似的错误,请帮助 作为参考,下面的源代码是一个生成周报的函数。



#: 금주 보고서는 read/modify
@login_required
def weekly_report_view(request):
    context = {
        'site_title': '취약점 Dashboard',
        'site_header': '취약점 Dashboard',
        'user': request.user,
        'has_permission': True,
        'now': datetime.datetime.now()
    }

    this_week = False
    week_num = request.GET.get('week_num')
    if week_num is None:
        start_date, end_date, week_num = get_week()
    stats = Statistics2020.objects.filter(week_num=week_num)
    if len(stats) == 0:
        return redirect('/dashboard/stat/weekly/create')
    stat = stats[0]
    if stat.end_date >= datetime.date.today():
        this_week = True
        stat_date_update(stat.week_num, stat.start_date, stat.end_date)
    else:
        pass
    context['stat'] = Statistics2020.objects.get(week_num=week_num)
    context['raw'] = json.loads(stat.raw)
    context['this_week'] = this_week
    return render(request, template_name='dashboard/weekly_report.html', context=context)


def get_week(today=datetime.datetime.now().date()):
    shift = BASE_WEEK_START - 1
    print(today)
    week_number = today.isoweekday() - shift
    if week_number <= 0:
        week_number += 7
    startdate = today - datetime.timedelta(days=week_number-1)
    enddate = startdate + datetime.timedelta(days=6)
    #print('%s~%s'% (startdate, enddate))
    return startdate, enddate, int(startdate.isocalendar()[1])

【问题讨论】:

  • before 1 week = 服务器启动日期

标签: django date datetime


【解决方案1】:


Python 3.6.8 (tags/v3.6.8:3c6b436a57, Dec 24 2018, 00:16:47) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license()" for more information.
>>> import datetime
>>> def hello(now=datetime.datetime.now()):
    print(now)

>>> hello()
2020-07-30 13:25:34.731001
>>> hello()
2020-07-30 13:25:34.731001
>>> hello()
2020-07-30 13:25:34.731001
>>> hello(datetime.datetime.now())
2020-07-30 13:25:53.446748
>>> hello(datetime.datetime.now())
2020-07-30 13:25:59.613445
>>> 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-09-16
    • 2016-01-30
    • 2017-06-29
    • 1970-01-01
    • 2023-02-26
    • 1970-01-01
    • 1970-01-01
    • 2020-01-07
    相关资源
    最近更新 更多