2008-10-22 7 views
19

Dans les modèles de Django, est-il une variable dans le contexte (par exemple {{ BASE\_URL }}, {{ ROOT\_URL }} ou {{ MEDIA\_URL }} que l'on peut utiliser pour créer un lien vers l'URL home d'un projet?Comment mettre un lien/url sur la page d'accueil du site web dans Django?

Autrement dit, si Django est en cours d'exécution dans la racine d'un projet , la variable (appelons-le R) {{ R }} dans un modèle serait /. Si l'URL racine est un sous-dossier http://host/X/ la {{ R }} variable serait /X/ (ou http://host/X/).

il semble douloureusement simple, mais je peux Je ne trouve pas de réponse :) Merci!

Répondre

37

Vous pouvez donner la configuration d'URL que vous utilisez pour gérer la page d'accueil un nom et l'utiliser:

urls.py:

from django.conf.urls.defaults import * 

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

Modèles:

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

MISE À JOUR: Les versions les plus récentes de Django requièrent des guillemets autour du nom de la vue:

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

Cette note dans le livre Django a quelques conseils sur le déploiement de vos applications à un sous-répertoire:

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

+0

Cela semble évident maintenant. :Oh merci! –

4

Dans votre admin, allez dans "sites" et définir le domaine.

Passez le context_instance=RequestContext(request) aux modèles en question.

Maintenant, utilisez {{ SITE_URL }} dans l'un de ces modèles et vous êtes en or.

Chapter 10 of the Django Book a plus d'informations que vous aurez besoin de regader ce bit de processeur de contexte.

1
(r'^$', 'django.views.generic.simple.redirect_to', {'url': '/home/'}), 

fonctionne très bien :)

Questions connexes