2017-12-05 2 views
0

모두!
저는 장고를 처음으로 배우고 실제로 프로젝트를 진행하고 있습니다. NoReverseMatch 예외가 발생하고 이유를 이해할 수 없습니다. 그것은 네임 스페이스 충돌을하지 않는 것, 다른 목록보기는 StoredItem 모델과 같은 방식으로 만들어진,하지만이 하나 예외가 발생됩니다
models.py :
장고 : NoReverseMatch 오류

from django.db import models 
from django.urls import reverse 


# Create your models here. 
class LegalEntity(models.Model): 
    name = models.CharField(max_length=100, help_text="Name") 
    rif = models.CharField(max_length=10, help_text="RIF") 
    address = models.TextField(help_text="Address") 
    phone_num = models.CharField(max_length=15, help_text="Phone number") 

    def __str__(self): 
     pass 


class Contract(models.Model): 
    name = models.CharField(max_length=100, help_text="Name") 
    number = models.CharField(max_length=50, help_text="Contract number") 
    description = models.TextField(help_text="Contract description") 
    start_date = models.DateField(null=False, blank=False, help_text="Start date") 
    expiry_date = models.DateField(null=True, blank=True, help_text="Expiry date") 

    def __str__(self): 
     return "number: {0}, " \ 
       "name: \"{1}\", " \ 
       "starts: {2}, " \ 
       "expires: {3}."\ 
       .format(self.number, self.name, self.start_date, self.expiry_date) 

    def get_absolute_url(self): 
     return reverse('contract-detail', args=[str(self.id)]) 


class Provider(LegalEntity): 
    contract = models.ForeignKey(Contract) 

    def __str__(self): 
     return "name: \"{0}\", " \ 
       "RIF: {1}, " \ 
       "phone: {2}."\ 
       .format(self.name, self.rif, self.phone_num) 

    def get_absolute_url(self): 
     return reverse('provider-detail', args=[str(self.id)]) 


class Item(models.Model): 
    name = models.CharField(max_length=100, help_text="Name") 
    serial = models.CharField(max_length=50, help_text="Serial No.") 
    manufacturer = models.CharField(max_length=50, help_text="Manufacturer") 
    provider = models.ForeignKey(Provider) 

    def __str__(self): 
     return "name: \"{0}\", " \ 
       "serial: {1}, " \ 
       "manufacturer: {2}," \ 
       "provider: {3}."\ 
       .format(self.name, self.serial, self.manufacturer, self.provider.name) 

    def get_absolute_url(self): 
     return reverse('item-detail', args=[str(self.id)]) 


class StoredItem(models.Model): 
    item = models.ForeignKey(Item) 
    quantity = models.IntegerField(default=0) 

    def __str__(self): 
     return "{0} - {1}, {2} pcs.".format(self.item.serial, self.item.name, self.quantity) 

    def get_absolute_url(self): 
     return reverse('storeditem-detail', args=[str(self.id)]) 

urls.py를

from django.conf.urls import url 

from . import views 

app_name = 'almacen' 
urlpatterns = [ 
    url(r'^$', views.index, name='index'), 
    url(r'^providers/$', views.ProviderListView.as_view(), name='providers'), 
    url(r'^items/$', views.ItemListView.as_view(), name='items'), 
    url(r'^storeditems/$', views.StoredItemListView.as_view(), name='storeditems'), 
    url(r'^contracts/$', views.ContractListView.as_view(), name='contracts') 
] 

views.py

from django.shortcuts import render 
from django.views import generic 

# Create your views here. 
from almacen.models import Contract, StoredItem, Provider, Item 


def index(request): 
    stored_items_num = len([x for x in StoredItem.objects.all() if x.quantity > 0]) 
    providers_num = Provider.objects.all().count() 

    return render(request, 
    'index.html', 
    context = {'stored_items_num': stored_items_num, 'providers_num': providers_num}) 


class ContractListView(generic.ListView): 
    model = Contract 


class ProviderListView(generic.ListView): 
    model = Provider 


class ItemListView(generic.ListView): 
    model = Item 


class StoredItemListView(generic.ListView): 
    model = StoredItem 

base_template.html 를 찾을 수 없습니다 'storeditem 디테일'에 대한

역 :

<!DOCTYPE html> 
<html lang="en"> 
    <head> 

     {% block title %}<title>Almacen Application</title>{% endblock %} 
     <meta charset="utf-8"> 
     <meta name="viewport" content="width=device-width, initial-scale=1"> 
     <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"> 
     <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"> </script> 
     <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> 

     <!-- Добавление дополнительного статического CSS файла --> 
     {% load static %} 
     <link rel="stylesheet" href="{% static 'css/styles.css' %}"> 
    </head> 

    <body> 

     <div class="container-fluid"> 
      <div class="content"> 
       <div class="row"> 
        <div class="col-sm-2 sidenav"> 
         <h4>Options: </h4> 
         {% block sidebar %} 
          <ul class="nav nav-pills nav-stacked"> 
           <li><a href="{% url 'almacen:index' %}">Home</a></li> 
           <li><a href="{% url 'almacen:items' %}">Items</a></li> 
           <li><a href="{% url 'almacen:providers' %}">Providers</a></li> 
           <li><a href="{% url 'almacen:contracts' %}">Contracts</a></li> 
           <li><a href="{% url 'almacen:storeditems' %}">Store</a></li> 
          </ul> 
         {% endblock %} 
        </div> 
        <div class="col-sm-9 "> 
         {% block content %}{% endblock %} 
        </div> 
       </div> 
      </div> 
     </div> 
     <footer id="center" class="container-fluid"> 
      <p> 
       PerfoSAP Package Application<br> 
       created by caesar_84 
      </p> 
     </footer> 
    </body> 
</html> 

storeditem_list.html

{% extends 'base_template.html' %} 

{% block content %} 

    <h1>Items list</h1> 

    {% if storeditem_list %} 

     <table style="width:100%"> 
      <tr> 
       <th>Serial</th> 
       <th>Name</th> 
       <th>Manufacturer</th> 
       <th>Provider</th> 
       <th>Quantity</th> 
      </tr> 

      {% for storeditem in storeditem_list %} 

      <tr> 
       <td> 
       <a href="{{storeditem.get_absolute_url}}"> {{ storeditem.item.serial }} </a> 
       </td> 
       <td>{{ storeditem.item.name }}</td> 
       <td>{{ storeditem.item.manufacturer }}</td> 
       <td>{{ storeditem.item.provider.name }}</td> 
       <td>{{ storeditem.quantity }}</td> 
      </tr> 

      {% endfor %} 
     </table> 

    {% endif %} 

{% endblock %} 

이 내가 갖는 메시지입니다. 'storeditem-detail'은 유효한 뷰 함수 또는 패턴 이름이 아닙니다.

+0

가 될 날이 있었다 오늘의 xD
오류가

<a href="{{storeditem.get_absolute_url}}"> {{ storeditem.item.serial }} </a> 

대신 "{{storeditem.get_absolute_url}}"의 라인에 storeditem_list.html에 약간의 시간을 훔친 오류를 발견 코드의 상세 뷰. – rajkris

+0

아직 어떤 것도 가지고 있지 않습니다. 먼저 목록보기를 구현하고 싶습니다. –

+0

어디에서 'contract-detail'을 얻습니까? 나는 코드에서 그것을 보지 못했습니까? – rajkris

답변

0

나는 내가 보는 해달라고 "{{storeditems.get_absolute_url}}"

관련 문제