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'은 유효한 뷰 함수 또는 패턴 이름이 아닙니다.
가 될 날이 있었다 오늘의 xD
오류가
대신
"{{storeditem.get_absolute_url}}"
의 라인에 storeditem_list.html에 약간의 시간을 훔친 오류를 발견 코드의 상세 뷰. – rajkris아직 어떤 것도 가지고 있지 않습니다. 먼저 목록보기를 구현하고 싶습니다. –
어디에서 'contract-detail'을 얻습니까? 나는 코드에서 그것을 보지 못했습니까? – rajkris