2013-07-19 27 views
5

Próbuję użyć TemplateView.as_view() w urls.py, a następnie nazwij go przy użyciu starego templatetag url. Czy to powinno działać? Czy po prostu robię to źle ...? A może przeszkadzają niektóre ze starszych bzdur w mojej aplikacji? Mam ...Jak odwrócić/nazwać adresy URL za pomocą TemplateView.as_view?

<li><a href="{% url "legal" %}">Terms and Conditions</a></li> 

i

url(r'^legal/$', TemplateView.as_view(template_name="legal.html"), name="legal"), 

co daje

NoReverseMatch at /how-it-works/ 
Reverse for '"legal"' with arguments '()' and keyword arguments '{}' not found. 

Wydaje mi się to nie zawsze zadziała w ten sposób.

Jak odwrócić adresy URL za pomocą TemplateView?

Odpowiedz

3

Kod, który wysłałeś, jest poprawny pod względem składni, ale jest coś, co przeszkadza.

  • To tag url jest Django 1.5+ składnia (uwaga ostrzeżenie w docs here), można potwierdzić, że jest zainstalowanie używasz? Podejrzewam, że to jest problem, podwójne cytowanie numeru legal w komunikacie o wyjątku jest bardzo podejrzane. Wiadomość wyjątku Django 1.5+ zawierałaby 'legal', a nie '"legal"' dla adresu URL, który nie został znaleziony przez program rozsyłający.
  • Czy adres URL jest rejestrowany przez program do przesyłania adresów URL? Możesz rozpoznać w trybie debugowania przez trafienie złego adresu URL (np. 404), wynik wyświetli listę wszystkich poprawnych ścieżek URL z adresu URL.

Dodaj więcej informacji, jeśli nadal występują problemy, abyśmy mogli dalej izolować.

Powodzenia!

+0

Dzięki, jestem na 1.4.5, więc mała uwaga dotycząca składni jest istotna, ponieważ działa, gdy "nie" zawierają cytaty, tj .: '{% url legal%}' jest konieczne. –

Powiązane problemy