Перевод даты в шаблонах Django и URLconf - PullRequest
0 голосов
/ 17 февраля 2012

У меня есть веб-сайт django, настроенный на французском языке в файле настроек.

В моем шаблоне есть следующая запись <a href="/{{ year }}/{{ month|date:"b" }}/">{{ month|date:"F" }}</a>.

В моем URLconf у меня есть запись url(r'^(?P<year>\d{4})/(?P<month>\w{3})/(?P<day>\d{1,2})/$',MonthArchivePostView.as_view())

Проблема в том, что в шаблоне сгенерированная дата на французском языке (например, для февраля у меня есть <a href="/2012/fév/">Février</a>) но URL ожидает английскую версию (/2012/feb/).

Я не против иметь даты в URL на английском или французском, мне просто нужно, чтобы они были сгенерированы в шаблонеи ожидается в файле URLconf.

Спасибо


Обновите решение "быстрое исправление, а не решение": везде используйте формат m вместо b дляиметь /02/ вместо /feb/

Так в urls.py

url(r'^(?P<year>\d{4})/(?P<month>\d{1,2})/$',
    MonthArchivePostView.as_view()
),

и в общих представлениях

class MonthArchivePostView(dates.MonthArchiveView):
    model = Post
    month_format = '%m'
    date_field = 'publish'

Ответы [ 2 ]

3 голосов
/ 17 февраля 2012

Вы можете использовать unlocalize, чтобы избежать локализации в шаблоне.

1 голос
/ 02 марта 2012

Как уже сказал @jkbr, unlocalize должен делать эту работу.

Кроме того, вы когда-нибудь задумывались о добавлении функции 'get_absolute_url(self)' в определение модели вашей модели ввода вместо определения URL-адреса в шаблоне?

Было бы лучше сохранить отдельное определение контента (модель) от представления контента (шаблон).

Также это может помочь вам решить вашу проблему.

Попробуйте добавить функцию, аналогичную этой, в конце вашей модели ввода:

def get_absolute_url(self):
    from time import strftime
    return "%s%s" % (settings.SITE_URL,strftime("%Y/%b/",self.creation_date))

Это должно работать (если я правильно понял, это что-то вроде отображения данных вместо их анализа, как объяснено в Локализация формата в документации Django.

Тогда в вашем шаблоне вы можете сделать что-то вроде:

<a href="{{entry.get_absolute_url}}">{{ month|date:"F" }}</a>
...