簡體   English   中英

在Django中管理錯誤的難度-NoReverseMatch at

[英]difficulty with managing the error in Django - NoReverseMatch at

選擇兩個參數后,我需要進行查詢。

  1. 出現問題是-模板渲染期間出錯-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})/$'] 
  2. 我無法管理模板-contract-list.html中的選擇。

  3. 告訴我正確的代碼答案。

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。
  • url文件指定此視圖需要兩個參數:
    • 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM