Django查看DateField格式头痛

时间:2016-11-11 08:19:47

标签: django django-templates django-views

帮助将不胜感激。无论我寻找什么,我发现其他一切,但我需要它似乎。 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)

有人可以提出建议吗?提前谢谢。

1 个答案:

答案 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()就会失败。