html - 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
请帮我解决
解决方案
您需要在 url 中提及 id,后跟您在 for 循环中使用的实例名称。使用以下更新链接更新您的模板文件:
<a href="{% url 'rentals-detail' rental.pk %}" class="btn btn-primary">View</a>
推荐阅读
- c# - 为什么强行关闭后的.VHDX文件又变忙了?
- r - 使用 R 中的新对象列表更新 msfit 对象类
- r - 在 R 中出现几个错误 - ggplot2 包不会加载
- sql - 透视具有相同数据的多个列
- python - 如何有效地从熊猫数据框中过滤和提取数据到数组中
- google-apps-script - 什么是谷歌 API 来管理在谷歌/Gsuite 中阻止/限制加载项的策略
- javascript - 如何找到从 12 月 1 日开始的每个第二个星期二?
- r - 向堆积条形图添加百分比标签
- user-interface - 如何在同一行显示列表文本与其他控件?
- node.js - Stripe-React:使用 Elements Provider 包装根应用程序