我想建立一個'列表'視圖,其中將顯示數據庫中的所有圖像。 這是模板:Django 1.10 NoReverseMatch - 退出但不匹配?
{% extends "base.html" %}
{% block title %}Your images{% endblock %}
{% block content %}
<ul>
{% for picture in images %}
<a href="{% url "detail" id=picture.id slug=picture.slug %}">
<img src="{{ picture.image.url }}" class="image-detail">
</a>
{% endfor %}
</ul>
{% endblock %}
而且列表和詳細信息的網址:
url(r'^detail/(?P<id>\d+)/(?P<slug>[\w]+)/$',views.image_detail,name='detail')
url(r'^list/$', views.image_list, name='list')
當用戶點擊圖片,他應該被重定向到該頁面「詳細'的觀點。
def image_detail(request, id, slug):
image = get_object_or_404(Image, id=id, slug=slug)
return render(request,
'images/image/detail.html',
{'section': 'images',
'image': image})
def image_list(request):
images = Image.objects.all()
return render(request,'images/image/list.html',{'images':images})
可以看出,'detail'視圖有2個參數:id和slug。 在上面的模板中,我得到了相應圖片的id和slug的參數(id=picture.id slug=picture.slug
)。 後,我沒有運行服務器,當我試圖訪問列表頁上我的網站,
我得到了一個「NoReverseMatch」錯誤: 異常值:反轉「細節」與參數「()」和關鍵字參數'{'id':1,'slug':'django-and-duke'}'找不到。嘗試了0個模式:[]。
我啓動了shell,導入了Image模型,並且想檢查是否確實沒有任何具有該id和slug的圖像。
>>> Image.objects.get(id=1,slug='django-and-duke')
<Image: Django and Duke>
所以實際上有一個圖像對象與請求的ID和slu ... ......發生了什麼事?
編輯:圖像模式:
class Image(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL,
related_name='images_created')
title = models.CharField(max_length=200)
slug = models.SlugField(max_length=200,
blank=True)
users_like = models.ManyToManyField(settings.AUTH_USER_MODEL,
related_name='images_liked',
blank=True)
image = models.ImageField(upload_to='images',blank=True)
description = models.TextField(blank=True)
created = models.DateField(auto_now_add=True, db_index=True)
objects = models.Manager() # The default manager.
published = PublishedManager() # Our custom manager.
def __str__(self):
return self.title
def save(self, *args, **kwargs):
if not self.slug:
self.slug = slugify(self.title)
super(Image, self).save(*args, **kwargs)
def get_absolute_url(self):
return reverse('images:detail', args=[self.id, self.slug])`
哪個網址。py是那些模式?如果他們不在主項目的urls.py中,那麼你如何包含它們? – Alasdair
該錯誤並不表示該項目不存在,它表示無法找到您的URL模式。 –
發佈你的模型,有沒有在那裏定義的'get_absolute_url'方法? –