如果我运行这个,其中vote.created_on是一个python datetime:
import calendar
created_on_timestamp = calendar.timegm(vote.created_on.timetuple())*1000
created_on_timestamp = str(created_on_timestamp)
将使用封装刻度线(')打印created_on_timestamp。如果我做int()或类似的东西,我会得到像1240832864000L这样的数字,就JavaScript而言(这是我需要使用这些日期时间的地方)。
有人知道处理这种情况的最佳方法吗?我应该把长条作为一个字符串并剥去刻度线吗?这看起来很疯狂。
===已编辑的附录===
更大的问题是Django正在将其转换为HTML编码的等效& 39;(或类似的)。解决这个问题的最佳方法是将long转换为字符串,当模板解析字符串时,使用{{created_on_timestamp | safe}}将引号标记为引号。
答案 0 :(得分:5)
>>> i = 1240832864000L
>>> i
1240832864000L
>>> print i
1240832864000
>>>
>>> '<script type="text/javascript"> var num = %s; </script>' % i
'<script type="text/javascript"> var num = 1240832864000; </script>'
当您触发对象的__repr__
您何时以及如何将此数据发送到JavaScript?如果您将其作为JSON发送,则不必担心长文字或Python如何在Python中显示其对象。
答案 1 :(得分:4)
使用以下行:
created_on_timestamp = str(created_on_timestamp)
您正在将某些内容转换为字符串。 python控制台用单引号表示字符串(这是你用刻度线表示的吗?)字符串数据当然不包括引号。
当您使用int()
将其重新转换为数字时,int()
知道它很长,因为它太大了,并返回一个长整数。
python控制台用尾随L
表示这个长数字。但数字内容当然不包括L
。
>>> l = 42000000000
>>> str(l)
'42000000000'
>>> l
42000000000L
>>> int(str(l))
42000000000L
>>> type( int(str(l)) )
<type 'long'>
尽管python控制台以这种方式表示数字和字符串(在python语法中),但您应该能够正常使用它们。你是否预料到一个问题,或者你现在遇到了一个问题?