Django URL缺少参数到视图

0 投票
1 回答
941 浏览
提问于 2025-04-17 23:53

我现在在尝试访问这个网址 .../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>

撰写回答