帮助将不胜感激。无论我寻找什么,我发现其他一切,但我需要它似乎。 wwwaaah ....
我的模板上有一个DateField,我需要为我正在构建的API获取用户指定的日期。我的麻烦是我需要特定的格式。我用Google搜索并尝试各种参数,但无法开始工作。 Django的DateField默认格式为yyyy-mm-dd,但由于我们的API工作方式,我需要yyyy / mm / dd。
规格: -django1.5 -python27
什么有效....
views.py
class AddForm(forms.Form):
new_timestamp = forms.DateField(required=False)
class TimeView(View):
def post(self, request)
time_content = AddForm(request.POST)
content['client_time'] = time_content
if time_content.is_valid():
new_timestamp = time_content.cleaned_data["new_timestamp"]
...
...blah blah
模板:
<div id="div_date_section">Date: <input type="text" name="new_timestamp"> YYYY/MM/DD </div>
给我以下输出(在我的调试日志中捕获):
2016-11-10 23:46:48,520: DEBUG: views.py:296 timestamp: 2016-01-01 00:00:00-08:00
2016-11-10 23:46:48,520: DEBUG: views.py:297 timestamp type: <type 'datetime.datetime'>
我想要的是一个字符串格式为: 2016/01/01 。
我尝试了各种方法无效。如上所述,我一直在谷歌搜索几个小时,我发现的一件事情如下,但这使我的代码不起作用。我的日志或控制台绝对没有错误,我的代码只是在我的代码中打破了几行代码中不相关的内容。
new_timestamp = forms.DateField(widget=forms.widgets.DateInput(format="%Y/%m/%d"),required=False)
有人可以提出建议吗?提前谢谢。
答案 0 :(得分:0)
经过一段时间的努力,我意识到我试图做的要求略有不同。虽然我仍然需要更改用户输入的内容,但我发现我可以操作DateTime对象,以便为我提供我需要的内容(原来是时代格式):
class AddForm(forms.Form):
new_timestamp = forms.DateField(required=False)
class TimeView(View):
def post(self, request)
time_content = AddForm(request.POST)
content['client_time'] = time_content
if time_content.is_valid():
new_timestamp = time_content.cleaned_data["new_timestamp"]
...
...
results = some_def(new_timestamp)
...
...
def some_def:
...
...
# the new line that gave me what i needed
epoch_time = time.mktime(new_timestamp.timetuple())
...
...
return epoch_time
我意识到这里没有足够的上下文,但希望这很清楚如何通过模板上的DateField传递用户输入并进行转换。此示例用于将2016-01-01之类的内容转换为纪元时间格式。
只是一个注释,为了避免我的初始问题,默认的DateField格式为yyyy-mm-dd,如果你使用yyyy / mm / dd没有任何小部件或格式操作,那么使用.is_valid()就会失败。