2010-06-17 4 views
1

Je déploie un projet Django sur un serveur Apache avec mod_python sous Linux. J'ai créé une structure de répertoire comme: /var/www/html/django/demoInstall où demoInstall est mon projet. Dans le httpd.conf j'ai mis le code suivant.Projet déployant Django-modpython

<Location "/django/demoInstall"> 
    SetHandler python-program 
    PythonHandler django.core.handlers.modpython 
    SetEnv DJANGO_SETTINGS_MODULE demoInstall.settings 
    PythonOption django.root django/demoInstall 
    PythonDebug On 
    PythonPath "['/var/www/html/django'] + sys.path" 

</Location> 

Il me devient l'environnement de django, mais le problème est que les urls mentionnés dans urls.py ne fonctionnent pas correctement.

Dans mon fichier url je l'ai mentionné l'url comme:

(r'^$', views.index), 

Maintenant, dans le navigateur, je suis en train de l'URL comme: http://domainname/django/demoInstall/ et je me attends à la views.index être invoquée. Mais je suppose qu'il s'attend à ce que l'URL soit seulement: http://domainname/.

Quand je change le mappage d'URL pour:

(r'^django/demoInstall$', views.index), 

il fonctionne très bien. S'il vous plaît suggérer comme je ne veux pas changer tous les mappages dans le fichier de configuration de l'URL.

Merci d'avance.

Répondre

2

Il y a un moyen assez simple de n'utiliser que django, sans avoir à toucher à Apache.

Renommez votre urls.py en autre chose, par ex. site_urls.py

Ensuite, créez un nouveau urls.py qui comprend que

from django.conf.urls.defaults import * 

urlpatterns = patterns('', 
    (r'^django/demoInstall/', include('site_urls.py')), 
) 

Cela permettra d'assurer que toutes les URL de recul continue de travailler aussi.

+0

Aah! si simple et facile. Je ne sais pas pourquoi cela ne m'a pas frappé. Merci beaucoup. –

0

Cela devrait être:.

PythonOption django.root /django/demoInstall 

Ie, doit correspondre sous URL dans la directive de localisation.

Vous ne devriez pas utiliser ce préfixe dans urls.py.

Questions connexes