首页 > 解决方案 > NoReverseMatch at /listings/ 未找到“列表”的反向。'listing' 不是有效的视图函数或模式名称

问题描述

所以当我访问该页面时出现此错误,我正在尝试使用分页器,但我不知道我错在哪里,index函数处理我正在谈论的页面

视图.py

def index(request):
    listings = Listing.objects.all()
    paginator = Paginator(listings, 3)
    page = request.GET.get('page')
    paged_listings = paginator.get_page(page)
    params = {'listings':paged_listings}
    return render(request, 'listings/listings.html', params)


def listing(request, listing_id):
    return render(request, 'listings/listing.html')


def search(request):
    return render(request, 'listings/search.html')

列表.html

{% extends 'base.html' %}
{% block content %}
{% load humanize %}
<!-- Breadcrumb -->
  <section id="bc" class="mt-3">
    <div class="container">
      <nav aria-label="breadcrumb">
        <ol class="breadcrumb">
          <li class="breadcrumb-item">
            <a href="{% url 'index' %}">
              <i class="fas fa-home"></i> Home</a>
          </li>
          <li class="breadcrumb-item active"> Browse Listings</li>
        </ol>
      </nav>
    </div>
  </section>

  <!-- Listings -->
  <section id="listings" class="py-4">
    <div class="container">
      <div class="row">
          {% if listings %}
          {% for listing in listings %}
          <div class="col-md-6 col-lg-4 mb-4">
            <div class="card listing-preview">
              <img class="card-img-top" src="{{ listing.photo_main.url }}" alt="">
              <div class="card-img-overlay">
                <h2>
                  <span class="badge badge-secondary text-white">${{ listing.price | intcomma}}</span>
                </h2>
              </div>
              <div class="card-body">
                <div class="listing-heading text-center">
                  <h4 class="text-primary">{{ listing.title }}</h4>
                  <p>
                    <i class="fas fa-map-marker text-secondary"></i>{{ listing.city }} {{ listing.state }}, {{ listing.zipcode }}</p>
                </div>
                <hr>
                <div class="row py-2 text-secondary">
                  <div class="col-6">
                    <i class="fas fa-th-large"></i>Sqfit: {{ listing.sqft }}</div>
                  <div class="col-6">
                    <i class="fas fa-car"></i>Garage: {{ listing.garage }}</div>
                </div>
                <div class="row py-2 text-secondary">
                  <div class="col-6">
                    <i class="fas fa-bed"></i>Bedrooms: {{ listing.bedrooms }}</div>
                  <div class="col-6">
                    <i class="fas fa-bath"></i>Bathrooms: {{ listing.bathrooms }}</div>
                </div>
                <hr>
                <div class="row py-2 text-secondary">
                  <div class="col-12">
                    <i class="fas fa-user"></i>{{ listing.realtor.name }}</div>
                </div>
                <div class="row text-secondary pb-2">
                  <div class="col-6">
                    <i class="fas fa-clock"></i>{{ listing.list_date | timesince }}</div>
                </div>
                <hr>
                <a href="{% url 'listing' listing.id %}" class="btn btn-primary btn-block">More Info</a>
              </div>
            </div>
          </div>
          {% endfor %}
          {% else %}
          <div class="col-md-12">
            <p>No Listings Available</p>
          </div>
          {% endif %}
        <!-- Listing 1 -->
        

      </div>

      <div class="row">
        <div class="col-md-12">
          {% if listings.has_other_pages %}
            <ul class="pagination">
              {% if listings.has_previous %}
                <li class="page-item">
                  <a href="?page={{listings.previous_page_number}}" class="page-link">&laquo;</a>
                </li>
                {% else %}
                <li class="page-item disabled">
                  <a class="page-link">&laquo;</a>
                </li>
              {% endif %}
            </ul>
          {% endif %}
          {% for i in listings.paginator.page_rage %}
          {% if listings.number == i %}
            <li class="page-item active">
              <a class="page-link">{{ i }}</a>
            </li>
            {% else %}
            <li class="page-item">
              <a href="?page{{i}}" class="page-link">{{i}}</a>
            </li>
          {% endif %}
          {% endfor %}
        </div>
      </div>
    </div>
  </section>
{% endblock %}

网址.py

from django.urls import path
from . import views

urlpatterns = [
    path('', views.index, name="listings"),
    path('<int:listing_id>', views.listing, name="=listing"),
    path('search', views.search, name="=search"),
]

标签: pythondjango

解决方案


您的 urls.py 中有一个错字

尝试使用这个:-

path('listing/<int:listing_id>/', views.listing, name='listing'),

错字在哪里?

你正在使用这个:-

path('<int:listing_id>', views.listing, name="=listing"),
----------------------------------------------^

推荐阅读