在我的Django python代码中,我想根据一天中的时间问候访问者。
它总是回馈'下午好'(即使它不是)但却看不出原因。
这是来自我的观点.py:
#import time
#import datetime
#from time import strftime
#from django.utile import timezone
def greet(request):
request.session['greet'] = 'Good day'
currentTime = time.strftime('%H')
int(currentTime)
if currentTime < 12 :
request.session['greet'] = 'Good morning'
if currentTime >= 18 :
request.session['greet'] = 'Good afternoon'
else :
request.session['greet'] = 'Good evening'
return request.session['greet']
答案 0 :(得分:1)
试试这个:
#import time
#import datetime
#from time import strftime
#from django.utile import timezone
def greet(request):
request.session['greet'] = 'Good day'
currentTime = time.strftime('%H')
int(currentTime)
if currentTime < 12 :
request.session['greet'] = 'Good morning'
elif currentTime < 18 :
request.session['greet'] = 'Good afternoon'
else :
request.session['greet'] = 'Good evening'
return request.session['greet']
另外,你是如何测试的? 如上所述,您只能使用当前计算机的时间进行测试。 为了测试你的if / elif / else语句逻辑,你需要能够为currentTime提供不同的值(你不想等待计算机的时钟改变 - 或者重置计算机时钟!)
执行此操作的一种方法是覆盖currentTime的值 例如:
...
currentTime = time.strftime('%H')
int(currentTime)
# temp code for testing various values of currentTime.
# Try values: below, at, and above each "breakpoint" for the if/elif/else statements.
# For example: 5, 12, 13, 17, 18, 22
currentTime = 5
if currentTime < 12 :
request.session['greet'] = 'Good morning'
...
验证完陈述的逻辑后,您可以删除&#34;测试&#34;代码。
(注意我使用Python,但不使用Django,因此语法可能略有不同,但逻辑是有效的。)
答案 1 :(得分:1)
int(currentTime)
将不执行任何操作,因为您没有将生成的整数值分配给任何变量。我已经在我的代码中更正了这一点,即currentTime = int(time.strfttime('%H'))
;
你已经评论了import
个陈述,所以我认为这些套餐都不会被导入(虽然没有使用过Django,所以我&#39;我不确定这一个);
就目前而言,你永远不会得到一个早上好的问候。如果是早上,问候语将设置为&#34;早上好&#34;,然后下一个if
/ else
语句将会运行 - 如果时间大于18
小时,它会说&#34;下午好&#34;否则会说&#34;晚安&#34;。
尝试if
,elif
和else
块,您可以清楚地定义每个问候语的范围。
例如:
def greet(request):
request.session['greet'] = 'Good day'
currentTime = int(time.strftime('%H'))
if currentTime < 12 :
request.session['greet'] = 'Good morning'
elif currentTime < 18 :
request.session['greet'] = 'Good afternoon'
else :
request.session['greet'] = 'Good evening'
return request.session['greet']
这意味着:
如果小时小于12
,则应该说&#34;早上好&#34;;
如果小时大于11
且小于18
(请记住if
/ elif
/ else
小区始终退出条件是真的,因为它没有在第一个条件下退出,我们知道小时不小于12
,因此它必须至少大于11
)它应该说&#34;下午好&#34;;
以及其他方式(如果这些条件都不成立,因此小时数大于17
),它会说&#34;晚上好&#34;。