2 votes

Django - comment câbler correctement les urls ? url(), include(), ImportError

J'essaie de structurer mon projet en plaçant les applications dans un dossier "apps", comme ceci :

 manage.py
 mysite
    apps
       __init__.py
       myapp1
          __init__.py
          models.py
          urls.py
          views.py
       myapp2
           __init__.py
           models.py
           urls.py
           views.py
    __init__.py
    settings.py
    urls.py
    wsgi.py

Et dans mysite/urls.py :

from django.conf.urls import patterns, include, url

from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('',
    url(r'^myapp1/', include('mysite.apps.myapp1.urls')),
    url(r'^mysite/apps/myapp2/', include('myapp2.urls')),
    url(r'^admin/', include(admin.site.urls)),
)

Il y a un problème avec :

    url(r'^myapp1/', include('mysite.apps.myapp1.urls')),
    url(r'^mysite/apps/myapp2/', include('myapp2.urls')),

Je n'ai pas pu câbler correctement ni myapp1 ni myapp2, Django me donne "ImportError...no module named myapp1...". Une aide quelconque ?

0voto

liuzhijun Points 665

Peut-être comme ça :

include('mysite.apps.myapp1.urls')),

mise à jour

vous pouvez essayer :

ajouter un fichier __init__.py dans le mysite dir

0voto

Izkata Points 3634

Il vous manque un niveau dans le chemin relatif :

url(r'^mysite/apps/myapp2/', include('apps.myapp2.urls')),

myapp1 Il me semble que ça devrait fonctionner.


Une note, comparant la façon dont vous essayez d'inclure myapp1 vs myapp2 il semble que vous ayez légèrement mal compris la structure. L'URL n'a rien à voir avec la disposition du code. C'est tout à fait valide :

url(r'^zimzam/allthethings/', include('apps.myapp2.urls')),

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X