[英]difficulty with managing the error in Django - NoReverseMatch at
選擇兩個參數后,我需要進行查詢。
出現問題是-模板渲染期間出錯-valoare_detail.html,它正在寫入-
NoReverseMatch at /valoare/MICA/ Reverse for 'contract_list' with arguments '()' and keyword arguments '{'valoare': 'MICA', 'tip': 'BUNURI'}' not found. 1 pattern(s) tried: ['valoare/(?P<valoare>[AZ]{4})/(?P<tip>[AZ]{8})/$']
我無法管理模板-contract-list.html中的選擇。
告訴我正確的代碼答案。
models.py
class Valoare(models.Model):
VALOARE_CHOICES = (
("MICA","mica"),
("MARE","mare"),
)
tip_valoare = models.CharField(max_length=4, choices=VALOARE_CHOICES, default="MICI", verbose_name='valoarea contractului')
file_name = models.FileField(null=True, blank=True, upload_to='contracte/templates/contracte/img/', verbose_name='img path')
def __str__(self):
return self.tip_valoare
class Tip(models.Model):
TIP_CHOICES = (
("BUNURI","bunuri"),
("SERVICII","servicii"),
("LUCRARI","lucrari"),
)
tip_contract = models.CharField(max_length=8, choices=TIP_CHOICES, default="BUNURI", verbose_name='tipul contractului')
file_name = models.FileField(null=True, blank=True, upload_to='contracte/templates/contracte/img/', verbose_name='img path')
def __str__(self):
return self.tip_contract
class Contract(models.Model):
valoare = models.ForeignKey('Valoare')
tip = models.ForeignKey('Tip')
data = models.DateField(blank=True, null=True)
file_name = models.FileField(null=True, blank=True, upload_to='pdf/', verbose_name='contract file name')
def __str__(self):
return str(self.CPV)
class Meta:
ordering = ["data"]
urls.py
from django.conf.urls import url
from . import views
urlpatterns = [
url(r'^$', views.valoare_list, name='valoare_list'),
url(r'^valoare/(?P<valoare>[A-Z]{4})/$', views.valoare_detail, name='valoare_detail'),
url(r'^valoare/(?P<valoare>[A-Z]{4})/(?P<tip>[A-Z]{8})/$', views.contract_list, name='contract_list'),
]
views.py
from django.shortcuts import render, get_object_or_404
from .models import Valoare, Tip, Contract
def valoare_list(request):
valoares = Valoare.objects.all()
return render(request, 'contracte/valoare_list.html', {'valoares': valoares})
def valoare_detail(request, valoare):
valoare = get_object_or_404(Valoare, tip_valoare=valoare)
tips = Tip.objects.all()
return render(request, 'contracte/valoare_detail.html', { 'valoare': valoare, 'tips':tips })
def contract_list(request, valoare, tip):
valoare = get_object_or_404(Valoare, tip_valoare=valoare)
tip = get_object_or_404(Tip, tip_contract=tip)
return render(request, 'contracte/contract_list.html', {'valoare': valoare, 'tip': tip})
valoare_list.html
{% for valoare in valoares %}
<a href="{% url 'valoare_detail' valoare=valoare.tip_valoare %}">
{{ valoare.tip_valoare }}
</a><br>
{% endfor %}
valoare-detail.html
{% for tip in tips %}
<a href="{% url 'contract_list' valoare=valoare.tip_valoare tip=tip.tip_contract %}">
{{ tip.tip_contract }}
</a><br>
{% endfor %}
合同list.html
Valoare: {{ valoare.tip_valoare }} <br>
Tip Contract: {{ tip.tip_contract }}
(????? the result is to be the selection from model Contract by this two parameters in this template)
告訴我正確的代碼答案。
NoReverseMatch at /valoare/MICA/ Reverse for 'contract_list' with arguments '()'
and keyword arguments '{'valoare': 'MICA', 'tip': 'BUNURI'}' not found.
1 pattern(s) tried: ['valoare/(?P<valoare>[A-Z]{4})/(?P<tip>[A-Z]{8})/$']
此錯誤非常明顯:
contract_list
視圖生成URI。 valoare
,為4個字母字符的單詞 tip
,為8個字母字符的單詞 BUNURI
作為tip
,對此URL無效。 因此,沒有反向uri匹配。 要解決此問題,您必須更正數據以使對象具有有效的tip
或者,如果6個字符的tip
有效,則放寬uri中的要求。 例如,要告訴它4到8個字符,您可以將其更改為[AZ]{4-8}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.