python - 管理 Django 中的错误有困难 - NoReverseMatch at

标签 python django python-3.x django-views django-urls

我需要在选择两次参数后进行查询。

  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>[A-Z]{4})/(?P<tip>[A-Z]{8})/$']
    
  2. 我无法管理模板 -contract-list.html 中的选择。

  3. 用代码告诉我正确答案。

模型.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"]

url.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'),
]

View .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 %}

合约列表.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 View 生成 URI。
  • url 文件指定此 View 需要两个参数:
    • valoare,作为 4 个字母字符的单词
    • tip,作为 8 个字母字符的单词
  • 但您提供给它的对象的 BUNURItip,这对此网址无效。

因此,没有反向 uri 匹配。 要修复此问题,您必须更正数据,以便对象具有有效的 tip,或者如果 6 字符 tip 有效,则放宽 uri 中的要求。例如,要告诉它从 4 到 8 个字符,您可以将其更改为 [A-Z]{4-8}

关于python - 管理 Django 中的错误有困难 - NoReverseMatch at,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45263536/

相关文章:

python - 如何使用 Django 在任务和 View 之间共享缓存?

python - 如何检查内部列表中是否存在某个项目并在包含该项目的相应外部列表中获取该列表项目?

python - 从 Python 列表中获取前 n 个唯一元素

css - 我需要在 django 中指定一些 id 以便稍后将其添加到 Bootstrap 中

django - 在独立脚本中使用 Django ORM(再次)

Python - 如何一键设置多个命令的优先级?

python - 使用 google-perftools 编译 Python 2.7.2

python - Django:AutoSlug 错误 "slug is defined before trying to ensure uniqueness"

python - 使用 WinPython 时,Python 中出现大量素数列表时出现意外的 sum(list) 行为

python - 即使 Pygame 窗口未处于事件状态,也可以继续使用 Pygame 跟踪鼠标