Как разместить ссылку / ссылку на домашнюю страницу сайта в Django? - PullRequest
20 голосов
/ 22 октября 2008

В шаблонах Django есть переменная в контексте (например, {{ BASE\_URL }}, {{ ROOT\_URL }} или {{ MEDIA\_URL }}, которую можно использовать для ссылки на home url проекта?

т.е. если Django работает в корне проекта, переменная (назовем ее R) {{ R }} в шаблоне будет /. Если корневой URL является подпапкой http://host/X/, переменная {{ R }} будет /X/ (или http://host/X/).

Это кажется до боли простым, но я не могу найти ответ. :) Спасибо!

Ответы [ 4 ]

38 голосов
/ 22 октября 2008

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

urls.py:

from django.conf.urls.defaults import *

urlpatterns = patterns('myproject.views',
    url(r'^$', 'index', name='index'),
)

Шаблоны:

<a href="{% url index %}">...

ОБНОВЛЕНИЕ: Более новые версии Django требуют кавычек вокруг названия представления:

<a href="{% url 'index' %}">...

В этой заметке в книге Django есть несколько советов по развертыванию ваших приложений в подкаталоге:

http://www.djangobook.com/en/1.0/chapter20/#cn43

10 голосов
/ 22 октября 2008

Я всегда использую что-то вроде <a href="/"> (конечно, при условии, что ваш дом находится в корне). Кажется, я вспомнил, что искал это однажды и не смог найти переменную Django для этого пути; во всяком случае, / казалось довольно простым, во всяком случае.

4 голосов
/ 22 октября 2008

В вашем админе зайдите на "сайты" и установите домен.

Передайте context_instance=RequestContext(request) шаблонам, о которых идет речь.

Теперь используйте {{ SITE_URL }} в любом из этих шаблонов, и вы великолепны.

Глава 10 Книги Django содержит больше информации, чем вам нужно, в отношении этого бита процессора контекста.

1 голос
/ 30 июля 2010
(r'^$', 'django.views.generic.simple.redirect_to', {'url': '/home/'}),

отлично работает:)

...