【问题标题】:Exception Type: NoReverseMatch - Django异常类型:NoReverseMatch - Django
【发布时间】:2020-04-16 01:54:20
【问题描述】:

研究了几个小时后,我无法摆脱这个错误,希望有人能帮助我。

型号:

class Puja(models.Model):
    seller = models.OneToOneField(Seller, on_delete=models.CASCADE)
    user = models.OneToOneField(User, on_delete=models.CASCADE, blank=True,null=True)
    title = models.CharField(max_length=100)
    video = models.FileField(blank=True)
    photo = models.ImageField(blank=True)
    published_date = models.DateTimeField("Published: ",default=timezone.now())
    bidding_end = models.DateTimeField()
    starting_price = models.IntegerField(default=1)
    #slug = models.SlugField(null=True) 

    def __str__(self):
        return str(self.title)

    #def get_absolute_url(self):
    #   return reverse('bidding_list_detail', args=[str(self.id)])  
    #slug time
    def get_absolute_url(self):
        return reverse('bidding_list_detail',args={'id': self.id})

观看次数:

class bidding_list(ListView):
    model = Puja
    template_name = 'bidding_templates/bidding_list.html'
    """return render(request= request,
      template_name='bidding_templates/bidding_list.html',
      context = {"Pujas": Puja.objects.all})"""

class bidding_list_detail(DetailView):
    model = Puja
    template_name = 'bidding_templates/bidding_list_detail.html'

网址:

    path('admin/', admin.site.urls),
    path("bidding_list/", bidding_list.as_view(), name="bidding_list"),
    path('<int:pk>', bidding_list_detail.as_view(), name='bidding_list_detail'),

管理员:


class PujaAdmin(admin.ModelAdmin):
    list_display = ('seller','title','video','photo','published_date','bidding_end','starting_price')

admin.site.register(Puja,PujaAdmin)

模板 1:

{% extends 'header.html' %}

{% block content %}

<h1>Pujas</h1>

{% for Puja in object_list %} <!--object_list-->

<ul>
  <li><a href="{{ Puja.get_absolute_url }}"> {{ Puja.title }} </a></li>
</ul>

{% endfor %}

{% endblock %}

模板 2:

{% extends 'header.html' %}

{% block content %}

<div>
  <h2>{{ object.title }}</h2>
  <p>{{ object.seller }}</p>
</div>
{% endblock %}

请注意,每当我从第一个模板中删除 &lt;a href="{{ Puja.get_absolute_url }}"&gt; 时,模型中的对象“puja”都会正确显示在模板上,但我无法访问它们。它们通常存在于管理面板上,但不会直接显示在网站上。

非常感谢您提前并保持健康。

编辑 1:这里是 urls.py 直接来自 django 创建的应用程序。更具体地说,我在项目之后创建了一个名为“main”的新应用程序,我在其中编写了所有项目,包括除编辑之外的所有关于此问题的代码。

from django.contrib import admin
from django.urls import path, include
from django.conf import settings
from django.conf.urls.static import static
from django.contrib.staticfiles.urls import staticfiles_urlpatterns

#from django.config import settings
#from django.config.urls.static import static

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('main.urls')),

    #path('', include('model.urls')),
    #path('', include('blog.urls')),
    #path('', include('photo.urls')),
    #path('', include('video.urls')),

] # +static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
urlpatterns += staticfiles_urlpatterns()
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

【问题讨论】:

  • urls.py 中似乎有问题,您是否还有其他 urls.py 中包含此文件?
  • 我确实编辑了问题,谢谢@Neeraj

标签: html django python-3.x


【解决方案1】:

我猜问题出在这一行 - return reverse('bidding_list_detail',args={'id': self.id}),您将 id 作为字符串传递,但尝试与 url 中的 int 匹配。尝试关注 @ 987654321@

【讨论】:

  • 其实,问题是他传递id作为参数,但url期待一个名为pk的参数
  • 你会如何在我的代码上解决它?谢谢@Shinratensei
  • get_absolute_url:return reverse('bidding_list_detail',args={'pk': self.id})
猜你喜欢
  • 1970-01-01
  • 2019-09-08
  • 2021-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-24
  • 2010-11-15
  • 2017-09-07
相关资源
最近更新 更多