Risposte:
L' NoReverseMatch
errore sta dicendo che Django non riesce a trovare un pattern URL corrispondente per l'URL che hai fornito in nessuno degli URL della tua app installata.
L'eccezione NoReverseMatch viene sollevata da django.core.urlresolvers quando un URL corrispondente nel tuo URLconf non può essere identificato in base ai parametri forniti.
Per avviare il debug, è necessario iniziare eliminando il messaggio di errore fornito.
NoReverseMatch in / my_url /
Questoèl'URL attualmente in fase di rendering, è questo URL a cui la tua applicazione sta attualmente tentando di accedere ma contiene un URL che non può essere trovato
Inverti per "my_url_name"
Questo è il nome dell'URL che non riesce a trovare
con argomenti '()' e
Questi sono gli argomenti non basati su parole chiave che fornisce all'URL
argomenti della parola chiave "{}" non trovati.
Questi sono gli argomenti delle parole chiave che fornisce all'URL
n pattern provati: []
Questi sono i modelli che è stato in grado di trovare nei tuoi file urls.py con cui ha cercato di confrontarsi
Inizia individuando il codice nella tua fonte pertinente all'URL attualmente in fase di rendering: l'URL, la vista e tutti i modelli coinvolti. Nella maggior parte dei casi, questa sarà la parte del codice che stai attualmente sviluppando.
Dopo averlo fatto, leggi il codice nell'ordine in cui django seguirà fino a raggiungere la riga di codice che sta cercando di costruire un URL per il tuo my_url_name
. Di nuovo, questo è probabilmente in un posto che hai cambiato di recente.
Ora che hai scoperto dove si è verificato l'errore, utilizza le altre parti del messaggio di errore per risolvere il problema.
urls.py
(ad esempio app_name = 'my_app'
) o se hai incluso l'applicazione con uno spazio dei nomi (per esempio include('myapp.urls', namespace='myapp')
, allora avete bisogno di includere il namespace durante la retromarcia, ad esempio {% url 'myapp:my_url_name' %}
o reverse('myapp:my_url_name')
.Gli argomenti e gli argomenti delle parole chiave vengono utilizzati per eseguire la corrispondenza con qualsiasi gruppo di acquisizione presente all'interno dell'URL dato che può essere identificato dalle ()
parentesi quadre nel pattern dell'URL.
Supponendo che l'URL che stai abbinando richieda argomenti aggiuntivi, dai un'occhiata al messaggio di errore e prima controlla se il valore per gli argomenti forniti sembra essere corretto.
Se non sono corretti:
Il valore è mancante o una stringa vuota
Ciò significa generalmente che il valore che stai trasmettendo non contiene il valore che ti aspetti che sia. Dai un'occhiata a dove gli assegni il valore, imposta i punti di interruzione e avrai bisogno di capire perché questo valore non viene passato correttamente.
L'argomento della parola chiave ha un errore di battitura
Correggilo nel pattern URL o nell'URL che stai costruendo.
Se sono corrette:
Esegui il debug della regex
Puoi utilizzare un sito Web come regexr per verificare rapidamente se il tuo pattern corrisponde all'URL che pensi di creare, copia il pattern URL nel campo regex in alto, quindi utilizza l'area di testo per includere gli URL che ritieni siano dovrebbe corrispondere a.
Errori comuni:
Corrispondenza con il .
carattere jolly o qualsiasi altro carattere regex
Ricorda di eseguire l'escape dei caratteri specifici con un \
prefisso
Solo corrispondenza con caratteri minuscoli / maiuscoli
Prova a utilizzare a-Z
o al \w
posto di a-z
oA-Z
Verifica che il modello che stai cercando sia incluso nei modelli provati
Se non è qui, è possibile che tu abbia dimenticato di includere la tua app all'interno INSTALLED_APPS
dell'impostazione (o INSTALLED_APPS
potrebbe essere necessario esaminare l'ordine delle app all'interno )
In Django 1.10, la possibilità di invertire un URL tramite il suo percorso python è stata rimossa. Al suo posto dovrebbe essere utilizzato il percorso denominato.
Se non sei ancora in grado di rintracciare il problema, sentiti libero di porre una nuova domanda che includa ciò che hai provato, ciò che hai ricercato (puoi collegarti a questa domanda) e quindi includere il codice pertinente al problema: l'URL che stai cercando di trovare, eventuali pattern URL rilevanti, la parte del messaggio di errore che mostra ciò che django ha cercato di abbinare e possibilmente l' INSTALLED_APPS
impostazione, se applicabile.
set app_name in the app's urls.py (e.g. app_name = 'my_app')
è il punto
E assicurati che il tuo percorso nell'elenco dei percorsi:
./manage.py show_urls | grep path_or_name
show_urls
non è una funzionalità di Django, questo non risponderà alla domanda.