Django Novato: “reverso não encontrado”
-
05-07-2019 - |
Pergunta
Eu tenho uma linha em um formulário Django:
{% for aa in my_array %}
que parece estar provocando este erro:
erro Template
Caught uma exceção durante o processamento: reverter para 'Dev_env.profiles.views.viewPlan' com argumentos '(' ')' e palavra-chave argumentos '{}' não foi encontrado.
O que esta mensagem de erro significa realmente?
Eu suspeito que seja a linha está correta, mas a mensagem de erro é errado. Ou o erro é real, mas esta linha é uma pista falsa.
O que na terra que eu deveria estar procurando?
Update: Paulo ordenados isto, abaixo
. Na verdade, eu tinha uma {% url viewPlan planId %}
um par de linhas longe (para que a linha de erro relatado foi errado), mas o erro foi provocado porque planId estava vazio neste caso.
Solução
Você tem uma vista nomeada viewPlan
com o qual você fazer algo como isto em um template:
{% url viewPlan %}
ou algo assim em um ponto de vista:
reverse('viewPlan')
Se você fizer isso e você não tem uma linha parecida com esta:
url(r'^whatever/url/$', 'dev_env.profiles.views.viewPlan', name="viewPlan"),
... na sua configuração url eu imagino que é o erro que você está recebendo. Alternativamente, e mais provável, provavelmente você está capturando um valor (talvez id ou algo assim) na viewPlan URL, mas não estão passando um argumento quando revertendo a url. Então, se você está capturando todos os valores na expressão regular, como este:
url(r'^plans/(\d+)$', 'dev_env.profiles.views.viewPlan', name="viewPlan"),
Você precisa chamá-lo assim:
{% url viewPlan 15 %}
Ou assim:
reverse('viewPlan', args=[15]);
Onde 15
é, obviamente, qualquer que seja o valor capturado está esperando.
Outras dicas
Eu tive o mesmo problema. No meu caso, eu tinha esquecido para adicionar as URLs para o aplicativo criança no arquivo urls.py principal:
urlpatterns = [
re_path("admin/", admin.site.urls),
re_path(r"^core/", include("core.urls")),
re_path(r"^$", welcome, name="welcome")
]