Django URL缺少参数到视图
我现在在尝试访问这个网址 .../polls/products/ 时遇到了这个错误。
TypeError at /polls/products/
productindex() takes exactly 2 arguments (1 given)
我已经测试过这个网址,它连接到一个我确定能正常工作的视图,结果是好的,所以我猜我的视图可能出了问题。
这是 models.py 的内容:
class Product(models.Model):
product_name = models.CharField(max_length=200)
product_description = models.TextField()
def __unicode__(self):
return self.product_name
class Image(models.Model):
product_image = models.ForeignKey(Product)
image = models.ImageField(upload_to='image')
这是 views.py 的内容:
def productindex(request, product_image_id):
product = get_object_or_404(Product, pk=product_image_id)
return render(request, 'polls/products.html', {'product': product})
这是 urls.py 的内容:
from django.conf.urls import patterns, url
from polls import views
urlpatterns = patterns('',
url(r'products/$', views.productindex, name='productindex'),
)
1 个回答
0
这个视图需要接收一个request
和一个产品的主键(pk)。现在它收到了请求,但没有收到主键。
这里有一种方法可以把产品的主键传递给视图。
在urls.py文件中...
from django.conf.urls import patterns, url
from polls import views
urlpatterns = patterns('',
url(r'products/(?P<pk>\d+)/$', views.productindex, name='productindex'),
)
然后你的html应该是这样的...
<a href="{% url 'productindex' product.pk %}">{{ product }}</a>