Элегантно генерировать дату и время из URL в Django? - PullRequest
1 голос
/ 26 июля 2010

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

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

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

example.com/invoicer?2/9/1984

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

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

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

Ответы [ 4 ]

5 голосов
/ 26 июля 2010

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

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

>>> datetime.datetime.strptime('2/9/1984', '%m/%d/%Y')
datetime.datetime(1984, 2, 9, 0, 0)
2 голосов
/ 26 июля 2010

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

example.com/invoicer?date=1280139973

time.gmtime(1280139973)
2 голосов
/ 26 июля 2010

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

example.com/invoicer/end_date/1984-02-09
2 голосов
/ 26 июля 2010

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

invoicer?date=2/9/1984

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

invoicer?date=19840209

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...