2016-10-24 3 views
0

Я бегу Django 1.10 на Mac OS X.Джанго NoReverseMatch при использовании URL в шаблоне

Я пытаюсь поставить некоторые ссылки в моих шаблонах, но я получил ошибку NoReverseMatch в обоих шаблонах.

ошибка выглядит следующим образом: NoReverseMatch at /kfet/ со следующим предложением:

Reverse for 'interface' with arguments '()' and keyword arguments '{'id_ienkli': ''}' not found. 1 pattern(s) tried: ['kfet/interface_du_klient/(?P<id_ienkli>\\d+)$'] 

Вот является urls.py в моем приложении:

#-*- coding: utf-8 -*- 

from kfet import views 
from django.conf.urls import url 
from . import views 
from kfet.models import klient 
from django.urls import reverse 

urlpatterns = [ 
    url(r'^$', views.accueil, name='accueil'), 
    url(r'^interface_du_klient/(?P<id_ienkli>\d+)$', views.interface_du_klient, name='interface'), 
    url(r'^date$', views.date_actuelle), 
    url(r'^achat/(?P<id_bouffon>\d+)/(?P<id_ach>\d+)$', views.achat,name='achat') 
] 

Вот мой views.py :

#-*- coding: utf-8 -*- 

from django.http import HttpResponse 
from django.shortcuts import render 
from kfet.models import klient,achetables 
from django.shortcuts import get_object_or_404 
from django.urls import reverse 

from datetime import datetime 


def date_actuelle(request): 
    return render(request, 'kfet/date.html', {'date': datetime.now()}) 

def accueil(request): 
    liste_tokards=klient.objects.all() 
    return render(request, "kfet/accueil.html",{'liste_tokards': liste_tokards}) 

def interface_du_klient(request,id_ienkli): 
    produits=achetables.objects.all() 
    klient_selec=get_object_or_404(klient, id_klient=id_ienkli) 
    if id_ienkli==0: 
     return redirect('accueil') 
    else : 
     render(request, "kfet/interface_du_klient.html", {'client': klient_selec}, {'liste_produits' : produits}) 

def achat(request,id_bouffon,id_ach): 
    klient_selec=get_object_or_404(klient, id_klient=id_ienkli) 
    if id_ach==0: 
     return redirect('interface_du_klient', id_ienkli=id_bouffon) 
    else: 
     klient_selec.acheter(id_ach) 
     return render(request, "kfet/interface_du_klient.html", {'client': klient_selec}, {'liste_produits' : produits}) 

Вот мой interface_du_klient.html:

<h1>Bienvenue sur le site de la KFet !</h1> 


Choisir un klient à faire payer ! 



<li><a href="{% url "kfet.views.accueil"%}">Retour accueil</a></li> 

<li><a href="{% url "achat" id_bouffon=client.id_klient id_ach=1 %}">Acheter bière 33cl</a></li> 

<li><a href="{% url "achat" id_bouffon=client.id_klient id_ach=2 %}">Acheter bière 25cl</a></li> 

<li><a href="{% url "achat" id_bouffon=client.id_klient id_ach=3 %}">Acheter pinte Blondi</a></li> 

И, наконец, вот мой accueil.html:

<h1>Bienvenue sur le site de la KFet !</h1> 


Choisir un klient à faire payer! 

{% for ptite_frappe in liste_tokards %} 
<div class="article"> 
    <h3>{{ptite_frappe.nom}} {{ptite_frappe.prenom}}</h3> 
    <p><a href="{% url 'interface' id_ienkli=petite_frappe.id_klient %}">Sélectionner cette petite frappe</a> 
</div> 
{% endfor %} 
+1

Я верю ve тег шаблона '{% url" foo "%}' фактически является вызовом 'reverse (" foo ")'. –

+0

Как вы называете reverse, в каком файле? –

+0

(спасибо за быстрый ответ) –

ответ

0

interface_du_klient.html не проходит ряд для id_ienkli в соответствии с требованиями по определению в urls.py:

url(r'^interface_du_klient/(?P<id_ienkli>\d+)$', views.interface_du_klient, name='interface'), 
+0

ok в intergace_du_klient.html есть некоторые ошибки со вторым аргументом, потому что я забыл удалить их извините –

+0

Извините за первое сообщение Я допустил некоторые ошибки ... Я только что изменил интерфейс__у_клиента. html, но я все равно получаю ошибку NoReverseMatch. Как вы сказали вчера, {% url 'achat' arg1 arg2%} - это вызов обратного ('achat') ... Затем, как я могу исправить эту ошибку? Где мне нужно отменить этот URL (в каком файле)? –

+0

Проблема может заключаться в том, что когда Django пытается отобразить 'accueil.html', существует хотя бы одно значение« petite_frappe.id_klient », которое является нулевым, пустым или иным образом нечисловым, и поэтому оно не может найти совпадающее определение URL-адреса интерфейса. –

Смежные вопросы