Django - Come utilizzare URLconfs con una cartella di applicazioni?
Domanda
Sto seguendo il tutorial sul sito web Django, ma sto cercando di espandere su di essa. Mi piace lo schema organizzativo di mettere tutte le applicazioni in una cartella "Applicazioni". Sto cercando di capire il modo corretto per includere urls.py al fine di ottenere tutto per collegare tra loro.
Ecco il mio urls.py radice:
from django.conf.urls.defaults import *
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
(r'^polls/', include('apps.polls.urls')),
(r'^admin/', include(admin.site.urls)),
)
Ecco il mio urls.py alle apps / sondaggi / urls.py:
from django.conf.urls.defaults import *
urlpatterns=patterns('polls.views',
(r'^polls/$', 'index'),
(r'^polls/(?P<poll_id>\d+)/$', 'detail'),
(r'^polls/(?P<poll_id>\d+)/results/$', 'results'),
(r'^polls/(?P<poll_id>\d+)/vote/$', 'vote'),
)
Qual è il modo corretto di fare questo? Grazie!
Soluzione
Il modo in cui attualmente averlo creato ... gli URL per sondaggi potrebbe essere:
http://your.url.here/polls/polls/235/results/
Questo è probabilmente non quello che volete. La funzione include
nel urlpatterns
nei specifica root file urls.py "polls/"
come prefisso a tutti urlpatterns
in app sondaggi. Pertanto, nel file sondaggi / urls.py, non si deve specificare nuovamente il prefisso "polls/"
in quanto causerà prefissi duplicati.
Altri suggerimenti
Come sono in esecuzione le istanze di Django? Se avete più vhosts configurato in Apache allora ogni istanza Django in / apps ha il proprio urls.py.
ho preso a lavorare in questo modo:
urlpatterns=patterns('polls.views',
(r'^$', 'index'),
(r'^(?P<poll_id>\d+)/$', 'detail'),
(r'^(?P<poll_id>\d+)/results/$', 'results'),
(r'^(?P<poll_id>\d+)/vote/$', 'vote'),
)
Credo che la parte urne è curato nella root urlconf