Como posso ver os padrões de URL atuais que o "reverso" está procurando?
Estou chamando de reverso em uma visão com um argumento que acho que deve funcionar, mas não funciona. De qualquer maneira, posso verificar o que está lá e por que meu padrão não está?
django
django-urls
django-views
interstar
fonte
fonte
Respostas:
Se você deseja uma lista de todos os URLs do seu projeto, primeiro precisa instalar django-extensions , adicione-o às suas configurações como esta:
E então, execute este comando no seu terminal
Para mais informações, você pode verificar a documentação.
fonte
TypeError: unsupported operand type(s) for +: 'NoneType' and 'str'
django_extensions
ao seuINSTALLED_APPS
após a instalação #Tente o seguinte:
Ou se você ainda está no Django 1. *:
fonte
set(v[1] for k,v in get_resolver(None).reverse_dict.items())
django.core.urlresolvers
foi removido no Django 2.0 , substitua a linha de importação porfrom django.urls import get_resolver
Solução Django> = 2.0
Testei as outras respostas neste post e elas não estavam funcionando com o Django 2.X, incompletas ou muito complexas. Portanto, aqui está minha opinião sobre isso:
Esse código imprime todos os URLs. Ao contrário de outras soluções, ele imprime o caminho completo e não apenas o último nó. por exemplo:
fonte
yield acc + [str(l.pattern)]
linha parayield acc + [str(l.pattern)], l.callback
. Tenha em mente que ela retorne a própria função de visualização e não um nomeDjango 1.11, Python 2.7.6
Em seguida, cole o código a seguir.
Saída de amostra:
fonte
None
à linhaurls = urlresolvers.get_resolver(None)
e, às vezes, recebi 'None' no início de alguns URLs.Existe uma receita no activestate
fonte
show_urls(urls.url_patterns)
.ModuleNotFoundError: No module named 'urls'
, não sei por quê?test.py
na raiz do meu projeto e tem esse erro, também se eu fizerimport urls
no intérprete, também recebo esse erro.import urls
é uma importação local, então você provavelmente precisa fazer issofrom app_name import urls
.Estou usando o próximo comando:
(Python3 + Django 1.10)
Uso:
Saída de amostra:
fonte
print
. Em vez disso, useself.stdout.write
. docs.djangoproject.com/en/1.10/howto/custom-management-commandsExiste um plugin que eu uso: https://github.com/django-extensions/django-extensions , ele possui um comando show_urls que pode ajudar.
fonte
No shell python manage.py
fonte
No Django 3.0, é tão fácil quanto:
Impressões:
[<URLPattern '' [name='home']>, <URLPattern '/testing' [name='another_url']>]
fonte
Eu tenho estendido comando do Seti para mostrar namespace, todas as partes do URL, auto-ajustar a largura das colunas, classificado por (namespace, nome): https://gist.github.com/andreif/263a3fa6e7c425297ffee09c25f66b20
Atualização: Uma nova versão do OrderedDict agora está no pacote django-🍌s: https://github.com/5monkeys/django-bananas/blob/master/bananas/management/commands/show_urls.py
fonte
Basta digitar um URL que você sabe que não existe e o servidor retornará uma mensagem de erro com uma lista de padrões de URL.
Por exemplo, se você estiver executando um site em http: // localhost: 8000 / something
Digitar
http: // localhost: 8000 / something / blahNonsense , e seu servidor retornará a lista de pesquisa de URL e a exibirá no navegador
fonte
Solução minimalista para django 2.0
Por exemplo, se você estiver procurando por um URL que esteja no primeiro aplicativo do installed_apps, poderá acessá-lo assim:
fonte
get_resolver
dedjango.core.urlresolvers
. Obrigado Marcio!Django 1.8, Python 2.7+ Apenas execute estes comandos no seu Shell. Python manage.py shell e execute o seguinte código.
fonte
Você pode criar uma importação dinâmica para reunir todos os padrões de URL de cada aplicativo em seu projeto com um método simples como este:
list_of_all_url_patterns = get_url_patterns()
Recentemente, usei algo assim para criar uma tag de modelo para mostrar links de navegação ativos.
fonte
Aqui
your_main_app
está o nome do aplicativo onde seu arquivo settings.py é colocadofonte