Comment puis-je voir les urlpatterns actuels que "reverse" recherche?
J'appelle inverse dans une vue avec un argument qui, à mon avis, devrait fonctionner, mais qui ne le fait pas. De toute façon, je peux vérifier ce qu'il y a et pourquoi mon modèle ne l'est pas?
django
django-urls
django-views
interstar
la source
la source
Réponses:
Si vous voulez une liste de toutes les urls de votre projet, vous devez d'abord installer django-extensions , ajoutez-le à vos paramètres comme ceci:
Et puis, exécutez cette commande dans votre terminal
Pour plus d'informations, vous pouvez consulter la documentation.
la source
TypeError: unsupported operand type(s) for +: 'NoneType' and 'str'
django_extensions
à votreINSTALLED_APPS
après l'installationEssaye ça:
Ou si vous êtes toujours sur Django 1. *:
la source
set(v[1] for k,v in get_resolver(None).reverse_dict.items())
django.core.urlresolvers
a été supprimé dans Django 2.0 , remplacez la ligne d'importation parfrom django.urls import get_resolver
Solution Django> = 2.0
J'ai testé les autres réponses dans cet article et elles ne fonctionnaient pas avec Django 2.X, incomplètes ou trop complexes. Par conséquent, voici mon avis sur ceci:
Ce code imprime toutes les URL, contrairement à certaines autres solutions, il imprimera le chemin complet et pas seulement le dernier nœud. par exemple:
la source
yield acc + [str(l.pattern)]
ligne enyield acc + [str(l.pattern)], l.callback
. Gardez à l'esprit qu'il renverra la fonction de vue elle-même et non un nomDjango 1.11, Python 2.7.6
Puis collez le code suivant.
Exemple de sortie:
la source
None
à la ligneurls = urlresolvers.get_resolver(None)
, et j'ai parfois obtenu «Aucun» au début de certaines URL.Il y a une recette sur activestate
la source
show_urls(urls.url_patterns)
.ModuleNotFoundError: No module named 'urls'
, je ne sais pas pourquoi?test.py
à la racine de mon projet et j'ai cette erreur, même si je le faisimport urls
dans l'interpréteur, j'obtiens également cette erreur.import urls
s'agit d'une importation locale, vous devez donc probablement le fairefrom app_name import urls
.J'utilise la commande suivante:
(Python3 + Django 1.10)
Usage:
Exemple de sortie:
la source
print
. Utilisez plutôtself.stdout.write
. docs.djangoproject.com/en/1.10/howto/custom-management-commandsIl y a un plugin que j'utilise: https://github.com/django-extensions/django-extensions , il a une commande show_urls qui pourrait aider.
la source
Dans python manage.py shell
la source
Dans Django 3.0, c'est aussi simple que:
Impressions:
[<URLPattern '' [name='home']>, <URLPattern '/testing' [name='another_url']>]
la source
J'ai étendu la commande de Seti pour afficher l'espace de noms, toutes les parties d'url, ajuster automatiquement les largeurs de colonne, triées par (espace de noms, nom): https://gist.github.com/andreif/263a3fa6e7c425297ffee09c25f66b20
Mise à jour: Une nouvelle version avec OrderedDict vit désormais dans le package django-🍌s: https://github.com/5monkeys/django-bananas/blob/master/bananas/management/commands/show_urls.py
la source
Tapez simplement une URL dont vous savez qu'elle n'existe pas et le serveur renverra un message d'erreur avec une liste de modèles d'URL.
Par exemple, si vous exécutez un site à l' adresse http: // localhost: 8000 / quelque chose
Tapez
http: // localhost: 8000 / something / blahNonsense , et votre serveur renverra la liste de recherche d'URL et l'affichera dans le navigateur
la source
Solution minimaliste pour django 2.0
Par exemple, si vous recherchez une URL qui se trouve sur la première application de installed_apps, vous pouvez y accéder comme ça:
la source
get_resolver
depuisdjango.core.urlresolvers
. Merci Marcio!Django 1.8, Python 2.7+ Exécutez simplement ces commandes dans votre Shell. Python manage.py shell et exécutez le code suivant.
la source
Vous pouvez créer une importation dynamique pour rassembler tous les modèles d'URL de chaque application de votre projet avec une méthode simple comme celle-ci:
list_of_all_url_patterns = get_url_patterns()
J'ai récemment utilisé quelque chose comme celui-ci pour créer une balise de modèle pour afficher les liens de navigation actifs.
la source
Voici
your_main_app
le nom de l'application où votre fichier settings.py est placéla source