Обратимые именованные URL-адреса для плоских страниц Django (или многоязычных ng)? - PullRequest
4 голосов
/ 21 сентября 2010

Есть ли способ иметь обратимые именованные URL-адреса для плоских страниц Django (или многоязычного ng, то есть плоских страниц + переводов)?

Если нет, доступно ли подобное приложение, которое может иметь именованные URL-адреса для страниц, которые можно редактировать через администратора? (И я бы предпочел избегать любых чудовищных CMS, пожалуйста.)

изменить: Пожалуйста, смотрите комментарии в ответах ниже для более подробного обсуждения и уточнения вопроса.

Ответы [ 3 ]

9 голосов
/ 10 ноября 2010

Как самая последняя вещь в вашем корневом URLConf, поместите

(r'^(?P<url>.*)$', 'django.contrib.flatpages.views.flatpage'),

Теперь вы можете использовать тег {% url %} с именем представления flatpage и ключевым словом аргумента url.Вы также можете использовать функцию reverse() в представлениях.

4 голосов
/ 08 ноября 2010

{% url%} тег шаблона работает с URLconf, тогда как плоские страницы обрабатывают несуществующие URL .

Если вы действительно хотите преобразовать плоские страницы в URL, мойПредполагается, что вы должны написать свой собственный тег {% flatpage_url%}, который будет выглядеть следующим образом:

    @register.simple_tag
    def flatpage_url(self, name):
        return FlatPage.objects.get({param}=name).url

- где {param} является одним из FlatPageполя модели .

Кроме того, вы можете объединить теги {% url%} и {% flatpageurl%} , чтобы последний откат к reverse () в случае, если FlatPage не найден (а reverse () - это то, что {% url%} использует ).

РЕДАКТИРОВАТЬ:

Я не принимаю больше голосов, так как ответ Джеймса Беннета на этот вопрос один (и мне стыдно, я упустил такое тривиальное решение) - поэтому, пожалуйста, проголосуйте за него.
1 голос
/ 10 ноября 2010

Разве предлагаемые решения в принципе не совпадают с жестким кодированием URL в шаблоне? В чем разница между жестким кодированием URL в href = "URL" и выполнением этого в {% url URL%}?

Я думаю, что лучшее решение найдено на: Как получить обратный URL для шаблона Django Flatpages , предложенного bufh.

Я думаю, что оптимальным способом достижения этого было бы добавление дополнительного поля 'name' в модель FlatPage.

...