Il La ragione per cui sto rispondendo a questa domanda è perché gli è stata data risposta anni fa e quelle risposte non sono più corrette o utili per le nuove versioni di Django, o c'è una pratica migliore che dovresti conoscere.
Quindi, se nel tuo progetto Django hai più di un'app, dovresti utilizzare un nuovo file urls.py per ognuna delle tue app. Significa che se avvii una nuova app devi creare manualmente un nuovo file chiamato urls.py nella sottocartella della tua nuova app. Molti principianti non capiscono perché questo è buono, ma questa è una buona pratica se pianifichi di creare più app in un progetto Django.
Quando si avvia un progetto, il file urls.py viene creato automaticamente nella cartella del progetto, ma se si crea/avvia una nuova app in Django, allora è una buona pratica se si crea un urls.py separato per quello app nella propria cartella. (E in questo modo non avrai mai il problema "importare le diverse visualizzazioni dell'app in urls.py" in primo luogo).
Dopo aver creato il file urls.py per la vostra applicazione, allora dovete includere del quel file urls.py dell'applicazione nel file di urls.py del progetto nel modo seguente:
Vediamo un esempio quando crei una nuova app chiamata "my_new_app". Questo è il modo di file urls.py principale del progetto dovrebbe essere simile:
from django.conf.urls import url, include
from django.contrib import admin
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^my_new_app/', include('my_new_app.urls')),
]
Nel file di urls.py del progetto è necessario importare il metodo di 'comprendere', allora si può includere il file urls.py my_new_app in il file urls.py principale del tuo progetto. Nella tua cartella my_new_app devi creare manualmente un file urls.py come ho detto sopra. Quindi devi usare quel file per tutti i tuoi urlpatterns di my_new_app. Quindi, ovviamente, in questo modo verrà automaticamente incluso nel file urls.py principale del progetto.
Quindi questo è allora come un tuo file urls.py my_new_app dovrebbe essere simile:
from django.conf.urls import url
from my_new_app import views
urlpatterns = [
url(r'^$', views.index, name = "index"),
]
Supponendo che anche è stata creata una prima vista chiamata ‘indice’ nel ‘file di my_new_app/views.py.
my_new_app/aspetto del file views.py come questo:
from django.shortcuts import render
from django.http import HttpResponse
def index(request):
return HttpResponse("Hello World!")
E si può controllare la my_new_app nel tuo browser su:
http://localhost:8000/my_new_app
(naturalmente si può dare alcuna url al tuo my_new_app nel file urls.py del tuo progetto.)
Ora puoi creare un'altra app, nel tuo progetto Django, chiamata my_second_app e dovresti ripetere i passaggi precedenti anche per quell'app. In questo modo non avrai problemi a importare viste da diverse app nei file urls.py. Questa sarebbe una "buona pratica" soluzione per questo problema nel 2017 in Django 1.11.
Questo non ha funzionato, ma grazie per il suggerimento. – William
@Robert: Ci sono stati un paio di errori di battitura (che ho risolto), a parte che è una soluzione funzionante. Non è necessario copiare e incollare le risposte nel codice, sarebbe meglio comprenderle e trovare il proprio modo di risolvere il problema. Sei anche libero di accettare [http://meta.stackexchange.com/a/5235/177799] la risposta che ti ha aiutato di più. –
Anche Rik, il tuo secondo suggerimento via Simon Visser, ha funzionato. Grazie. – William