首页 > 解决方案 > django.urls.exceptions.NoReverseMatch:“rentals-detail”的反向,没有找不到参数。尝试了 1 种模式:['(?P[0-9]+)/$']

问题描述

我正在尝试将 url 标记添加到模板并一直运行到此错误:

django.urls.exceptions.NoReverseMatch:“rentals-detail”的反向,没有找不到参数。尝试了 1 种模式:['(?P[0-9]+)/$']

我已经尝试了所有建议的解决方案,但似乎都没有。我猜这是模板或我的网址的问题

这是受影响的模板

 {% extends 'index.html' %}
    {% load static %}
    
    
    {%block content%}

<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.5.3/dist/css/bootstrap.min.css"
      integrity="sha384-TX8t27EcRE3e/ihU7zmQxVncDAy5uIKz4rEkgIXeMed4M0jlfIDPvg6uqKI2xXr2" crossorigin="anonymous">



        <div class="row">
            {% for rental in rentals %}
            <div class="col">
                <div class="card" style="width: 18rem;">
                    <img src="{{ rental.main_image.url}}" class="card-img-top" alt=" A photo of the house">
                    <div class="card-body">
                        <h5 class="card-title">{{ rental.size}}</h5>
                        <p class="card-text">{{ rental.rent }}</p>
                        <a href="{% url 'rentals-detail'  %}" class="btn btn-primary">View</a>
                    </div>
                </div>
            </div>
            {% endfor %}
        </div>


    </div>


    <!-- end of the cards container -->

</div>
</div>
<!-- end of the main content area of the website -->

<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js"
        integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj"
        crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.5.3/dist/js/bootstrap.bundle.min.js"
        integrity="sha384-ho+j7jyWK8fNQe+A12Hb8AhRq26LrZ/JpcUGGOn+Y7RsweNrtN/tE3MoK7ZeZDyx"
        crossorigin="anonymous"></script>


    {% endblock %}

我的应用程序的网址

from django.urls import path
from . import views
from .views import RentalsDetailView

urlpatterns=[
    path('',views.rentals_all,name='rental-home'),
    path(r'<int:pk>/',RentalsDetailView.as_view(),name='rentals-detail')
]

我的看法

from django.shortcuts import render
from django.views.generic import ListView,DetailView
from .models import rentals

def rentals_all(request):
    Rentals=rentals.objects.all().order_by('-date_posted')
    context={'rentals':Rentals}
    return render(request,'rentals/home.html',context)

class RentalsDetailView(DetailView):
    model = rentals

和我的模特

from django.db import models
from django.utils import timezone
from users.models import User


class rentals(models.Model):
    location=models.CharField(max_length=30)
    main_image=models.ImageField(upload_to='images/',
                                 default='https://photos.google.com/photo/AF1QipOK45w-YPGkrI5Y-Njk8IP6eXFwisNgGkBlfJzR')
    rent= models.IntegerField()
    size=models.CharField(max_length=30)
    owner=models.CharField(max_length=100)
    phone=models.CharField(max_length=15)
    house_type=models.CharField(max_length=40)
    description=models.TextField()
    date_posted= models.DateTimeField(default=timezone.now)
    #agent=models.ForeignKey(User,null=True,on_delete=models.SET_NULL)
    image=models.FileField(blank=True)

    def __str__(self):
        return self.owner


class RentalImage(models.Model):
    rental=models.ForeignKey(rentals,default=None,on_delete=models.CASCADE)
    images=models.FileField(upload_to='images/')


    def __str__(self):
        return self.rental.owner

请帮我解决

标签: htmldjango

解决方案


您需要在 url 中提及 id,后跟您在 for 循环中使用的实例名称。使用以下更新链接更新您的模板文件:

<a href="{% url 'rentals-detail' rental.pk %}" class="btn btn-primary">View</a>

推荐阅读