#python #django
Вопрос:
Реверс для «клиента» с аргументами «(«,)» не найден. 1 образец(ы) попробовал: [‘клиент/(?P[^/] )/$’]
Это ошибка,
Метод запроса: ПОЛУЧИТЬ URL-адрес запроса: http://127.0.0.1:8000/ Версия Django: 3.2.4 Тип исключения: NoReverseMatch Значение исключения:
Обратное для «клиента» с аргументами » ( «,) » не найдено. 1 образец(ы) попробовал: [‘клиент/(?P[^/] )/$’] Место исключения: C:UsersuserAppDataLocalProgramsPythonPython39libsite-packagesdjangourlsresolvers.py, строка 694, в исполняемом файле _reverse_with_prefix Python: C:UsersuserAppDataLocalProgramsPythonPython39python.exe Версия Python: 3.9.5 Путь к Python:
[‘C:UsersuserDownloadsGit Проектпервый веб-сайт’, ‘C:UsersuserAppDataLocalProgramsPythonPython39python39.zip’, ‘C:UsersuserAppDataLocalProgramsPythonPython39DLLs’, ‘C:UsersuserAppDataLocalProgramsPythonPython39lib’, ‘C:UsersuserAppDataLocalProgramsPythonPython39’, ‘C:UsersuserAppDataLocalProgramsPythonPython39libsite-packages’] Серверное время: Ср, 09 июня 2021 06:20:15 0000
Это код
urls.py
from django.urls import path
from . import views
urlpatterns = [
path('', views.dashboard, name="dashboard"),
path('customer/<str:pk>/', views.customer, name="customer"),
path('product/', views.product, name="product"),
]
это models.py
from django.db import models
# Create your models here.
class Customer(models.Model):
name = models.CharField(max_length=200, null=True)
phone = models.FloatField(max_length=200, null=True)
email = models.CharField(max_length=200, null=True)
date_created = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.name
class Tag(models.Model):
name = models.CharField(max_length=200, null=True)
def __str__(self):
return self.name
class Product(models.Model):
CATEGORY = (
('Indoor', 'Indoor'),
('Outdoor', 'Outdoor')
)
name = models.CharField(max_length=200, null=True)
price = models.FloatField(null=True)
tag = models.ManyToManyField(Tag)
category = models.CharField(max_length=200, null=True, choices=CATEGORY)
description = models.CharField(max_length=200, null=True)
date_created = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.name
class Order(models.Model):
#we create a dropbox like this
STATUS = (
('Pending', 'Pending'),
('Out Of Deliery', 'Out Of Delivery'),
('Deliverder', 'Delivered'),
)
customer = models.ForeignKey(Customer, null=True, on_delete=models.SET_NULL)
product = models.ForeignKey(Product, null=True, on_delete=models.SET_NULL)
date_crated = models.DateTimeField(auto_now_add=True)
status = models.CharField(max_length=200,null=True, choices=STATUS)
def __str__(self):
return self.status
This is views.py
from django.shortcuts import render
from django.http import HttpResponse
from .models import Customer, Order, Product
# Create your views here.
def dashboard(request):
customer = Customer.objects.all()
orders = Order.objects.all()
total_customer = customer.count()
total_orders = orders.count()
delivered = orders.filter(status='delivered').count()
pending = orders.filter(status='pending').count()
context = {'orders':orders, 'total_orders':total_orders, 'total_customer':total_customer, 'pending':pending,'delivered':delivered, 'customer':customer}
return render(request, "accounts/dashboard.html", context)
def product(request):
products = Product.objects.all()
return render(request,'accounts/products.html' ,{'products':products})
def customer(request, pk):
customer = Customer.objects.get(id=pk)
orders = customer.order_set.all()
order_count = orders.count()
context = {'customer':customer, 'orders':orders, 'order_count':order_count}
return render(request, 'accounte/contact.html', context)
Шаблоны Dashboard.html (html-файл)
{% extends 'accounts/main.html' %}
{% block content %}
{% load static %}
<div class="center" style="display: block; margin-left: auto; margin-right: auto; width: 50%; ">
<img src="{% static 'images/welcome.png' %}" class="img-fluid" alt="">
</div>
<br>
<br>
<br>
<br>
<div class=" justify-content-center" style="padding: 20; width: 60%; margin-right: auto; margin-left: auto;">
<h1 class="display-1 " style="text-align: center; font-style: italic;">This is my first website</h1>
<div style="padding-top: 50;">
<img src="{% static 'images/186.png' %}" alt="" style="display: block; margin-left: auto; margin-right: auto; width: 50%; ">
</div>
</div>
<br>
<div class="row">
<div class="col-md-5">
<h5>Customers</h5>
<hr>
<div class="card card-body">
<a class="btn btn-primary btn-sm-btn-block" href="">Create Customers</a>
<table class="table table-sm">
<tr>
<th>Customers: </th>
<th>Phone no: </th>
</tr>
{% for customers in customer %}
<tr>
<th><a class="btn btn-sm btn-info" href="{% url 'customer' customer.id %}">view</a></th>
<td>{{customers.name}}</td>
<td>{{customers.phone}} </td>
</tr>
{% endfor %}
</table>
</div>
</div>
<div class="col-md-7">
<h5>Last 5 orders</h5>
<hr>
<div class="card card-body">
<a class="btn btn-primary btn-sm btn-block" href="">Create Orders</a>
<table class="table table-sm">
<tr>
<th>Product</th>
<th>category</th>
<th>Date Ordered</th>
<th>Status</th>
<th>Update</th>
<th>Remove</th>
</tr>
{% for i in orders %}
<tr>
<td>{{i.product}} </td>
<td>{{i.product.category}} </td>
<td>{{i.date_crated}} </td>
<td>{{ i.status }} </td>
<td><a href="#">Update</a></td>
<td><a href="#">Delete</a></td>
</tr>
{% endfor %}
</table>
</div>
</div>
{% include 'accounts/status.html' %}
</div>
{% endblock %}**
я понимаю, почему я получаю ошибку. Помоги мне выбраться!
Комментарии:
1. Ты пишешь
{% for customers in customer %}
, а потом{% url 'customer' customer.id %}
.customer
вот набор запросов , и, следовательно,customer.id
вы, возможно, не хотели писатьcustomers.id
(Обратитеs
внимание, хотя я бы сказал, что это неправильное название, поскольку то, что на самом деле является множественным числом, называется единственным, а то, что является единственным, называется множественным числом…)2. да , спасибо, я и забыл об этом..