【发布时间】:2016-05-23 05:33:15
【问题描述】:
我正在尝试使用 get_absolute_url 模型方法在模板中显示图像。
型号:
class UserData(models.Model):
......
photo = models.ImageField(upload_to = 'photo/', blank=True)
def __unicode__(self):
return '%s%s' %(self.last_name, self.photo)
def get_absolute_url(self):
return reverse("user_edit", kwargs={"pk": self.id)
网址:
url(r'^entry/(?P<pk>\d+)/edit/$',views.UserUpdateView.as_view(), name='user_edit')
模板:
<img src="{{ userdata.get_absolute_url }}"/>
并且可以成功获取模板中的url为:
但如果我在
中再添加一个参数return reverse("user_edit", kwargs={"pk": self.id, 'photo':self.photo})
我收到错误:
NoReverseMatch at /entry/1/edit/
Reverse for 'user_edit' with arguments '()' and keyword arguments '{'pk': 1,'photo': <ImageFieldFile: photo/_IGP7076.jpg>}' not found. 1 pattern(s) tried: ['entry/(?P<pk>\\d+)/edit/$']
怎么了?提前致谢。
【问题讨论】:
-
您是否定义了一个名为
"user_edit"的url,它接受pk和photo作为命名参数?如果您的原始实现仅适用于pk,则 URL 只接受那么多。如果您还需要传递photo,那么您需要修改url 模式。请添加user_edit的网址格式。 -
网址模式存在,添加在上面
-
它确实存在,但它只有一个命名参数
pk而不是photo。这就是您收到错误的原因。 -
您希望通过在 url 中传递
photo来实现什么? -
我想在页面上显示照片。请帮忙更新网址。