2011-01-04 3 views
3

Je suis Apress: Projets pratiques Django et je suis tombé sur quelque chose qui me déroute un peu.include() et flatpages confusion

Quand je mis mon url.py pour pointer vers flatpages il fonctionne très bien si je fais ceci:

... 
(r'', include('django.contrib.flatpages.urls')), 
... 

Mais il ne fonctionne pas si je fais ceci:

from django.contrib import flatpages 
... 
(r'', include(flatpages.urls)), 
... 

Il me dit que:

objet

'module' n'a pas d'attribut '' urls

Ma connaissance des deux Django et Python est assez limité, cela peut être vraiment évident, mais ce serait bien de comprendre ce qui se passe :)

Merci

Répondre

2

Il faut la variable urlpatterns de la autre module. Essayez donc:

from django.contrib import flatpages 
... 
(r'', include(flatpages.urls.urlpatterns)), 
... 

C'est en ligne avec l'exemple dans les documents django here.

Edit:

Je trouve la question. Il y a quelque chose qui gâche les importations de django.contrib, je suis toujours en train d'examiner cela. Changez votre importation en from django.contrib.flatpages import urls.

Donc, votre code sera:

from django.contrib.flatpages import urls 
... 
(r'', include(urls.urlpatterns)), 
... 
+1

Cependant l'erreur @Acorn devient est que 'flatpages' n'a pas' urls' comme un attribut de sorte qu'il ne sera pas en mesure d'obtenir jusque-là, et nous n'avons pas encore réussi à transmettre quoi que ce soit à la fonction 'include', à cause de cette erreur. –

+0

Aussi, voici un lien vers la section spécifique des docs django concernant le passage des objets à inclure à la place des chaînes, bien que cela ne résout pas vraiment cette question: http://docs.djangoproject.com/fr/1.2/topics/ http/urls/# passing-callable-objects-au lieu-de-chaînes – Acorn

+0

J'ai mis à jour ma réponse à une version testée fonctionnant. –