Я работаю над веб-приложением, которое позволит пользователю выполнять поиск по дате, например:

results = Something.objects.filter(end = date)

Я планирую передать информацию о дате через URL, например:

example.com/invoicer?2/9/1984

Затем я получу дату с помощью запроса. ПОЛУЧИТЬ, разорвать первую часть и сохранить ее как месяц, удалить косую черту, разорвать вторую часть как дату и т. Д. И т. Д.

Я не слишком беспокоюсь о проверке ошибок / ввода, так как только доверенные администраторы будут иметь доступ к этому, но это похоже на дурацкий способ создания даты и времени.

Есть идеи получше?

1
Michael Morisy 26 Июл 2010 в 19:51

4 ответа

Лучший ответ

[...] разорвать первую часть и сохранить ее как месяц, удалить косую черту, разорвать вторую часть как дату и т. д. и т. д.

Это действительно не идеальный способ генерировать дату и время. Вам лучше разбирать строки:

>>> datetime.datetime.strptime('2/9/1984', '%m/%d/%Y')
datetime.datetime(1984, 2, 9, 0, 0)
5
SilentGhost 26 Июл 2010 в 15:55

Кажется довольно нормально. Еще один способ сделать это - не использовать строку запроса, а путь:

example.com/invoicer/end_date/1984-02-09
2
godswearhats 26 Июл 2010 в 15:56

Вам будет легче, если вы используете параметр для значения:

invoicer?date=2/9/1984

И вы можете предпочесть использовать дату ISO8601:

invoicer?date=19840209

Я не уверен, каков ваш пользовательский интерфейс для этого, или вы ожидаете, что люди будут печатать эти URL вручную? Если нет, то IS08601 - это путь.

2
Ned Batchelder 26 Июл 2010 в 15:55

Вы можете преобразовать в дату unix / epoch и передать длинное целое число. супер просто и не беспокойтесь о разборе строк. просто используйте python's time.gmtime, чтобы узнать время от количества секунд.

example.com/invoicer?date=1280139973

time.gmtime(1280139973)
2
jasonmw 26 Июл 2010 в 16:24