je vérifie django pour la première fois suivant le tutoriel https://docs.djangoproject.com/en/1.6/intro/tutorial03/Django « supprimer définitivement dans urls modèles » ne fonctionne pas
Jusqu'à présent, il a été de plaine voile. J'ai rencontré un problème à la section Supprimer les URL codées en dur. J'utilise Django 1.6.6.
Quand je change l'url hardcoded de:
<li><a href="/polls/{{ poll.id }}/">{{ poll.question }}</a></li>
à:
<li><a href="{% url 'detail' poll.id %}">{{ poll.question }}</a></li>
je reçois une erreur 404 comme suit:
Page not found (404)
Request Method: GET
Request URL: http://localhost:8000/polls/%7B%%20url%20'detail'%20poll.id%20%7D
Using the URLconf defined in mysite.urls, Django tried these URL patterns, in this order:
^polls/ ^$ [name='index']
^polls/ ^(?P<poll_id>\d+)/$ [name='detail']
^polls/ ^(?P<poll_id>\d+)/results/$ [name='results']
^polls/ ^(?P<poll_id>\d+)/vote/$ [name='vote']
^admin/
The current URL, polls/{% url 'detail' poll.id }, didn't match any of these.
You're seeing this error because you have DEBUG = True in your Django settings file. Change that to False, and Django will display a standard 404 page.
L'URL qui apparaît dans la la barre d'adresse est
mylocalenv/polls/%7B%%20url%20%27detail%27%20poll.id%20%7D
J'ai essayé de supprimer les guillemets de 'detail' mais étant donné que je suis sur django 1.6.6 je n'aurais pas besoin de le faire. Cela n'a pas fonctionné non plus. J'ai aussi essayé d'avancer un peu et d'inclure le/polls/namespace dans urls.py mais encore une fois, pas de joie.
Mon fichier urls.py ressemble à ceci:
from django.conf.urls import patterns, url
from polls import views
urlpatterns = patterns('',
# ex: /polls/
url(r'^$', views.index, name='index'),
# ex: /polls/5/
url(r'^(?P<poll_id>\d+)/$', views.detail, name='detail'),
# ex: /polls/5/results/
url(r'^(?P<poll_id>\d+)/results/$', views.results, name='results'),
# ex: /polls/5/vote/
url(r'^(?P<poll_id>\d+)/vote/$', views.vote, name='vote'),
)
Le code exact dans mon modèle index.html est:
{% if latest_poll_list %}
<ul>
{% for poll in latest_poll_list %}
<li><a href="{% url 'detail' poll.id %}">{{ poll.question }}</a></li>
{% endfor %}
</ul>
{% else %}
<p>No polls are available.</p>
{% endif %}
Got it
Mais je frustrante aucune idée pourquoi. En désespoir de cause dans mon index.html j'ai commencé à jouer avec le fichier index.html sur cette ligne:
<li><a href="{% url 'detail' poll.id %}">{{ poll.question }}</a></li>
Pour aucune raison logique que j'ai changé poll.id à poll_id. Le rechargement a cassé index.html comme je m'y attendais. Quand je l'ai changé à poll.id tout fonctionne. Cela n'a aucun sens. Je suis même revenu à l'index.html qui auparavant ne fonctionnait pas et maintenant ça marche aussi. J'ai redémarré le serveur avant chaque vérification. Je suis ennuyé. Mais au moins ça marche.
On dirait que ce n'est pas le code exact dans votre modèle. Pouvez-vous copier coller le code exact? – karthikr
Le reste de votre modèle fonctionne-t-il réellement? Il semble que ce n'est pas réellement analysé, donc vous obtenez la balise de modèle brut dans votre lien. –
Ouais c'est ce que je pensais aussi, mais ça marche bien jusqu'à ce que je mette le lien vers la balise {% url%}. Ai-je manqué une importation ou quelque chose? –