在django中提交表单时出现TypeError

时间:2012-04-28 04:55:36

标签: django forms typeerror

我在/ item / 3 / sell_offer / 4 /
下有一个表格 with action =“add_post /”

我希望它转到/ item / 3 / sell_offer / 4 / add_post

相关的urlpatterns是

(r'^item/(?P<item_id>\d+)/sell_offer/(?P<sell_offer_id>\d+)/$', views.sell_offer_page),
(r'^item/(?P<item_id>\d+)/sell_offer/(?P<sell_offer_id>\d+)/add_post/$', views.sell_offer_add_post),

并且视图看起来像..

def sell_offer_add_post(request, item_id, sell_offer_id):
    p = request.POST

    if p.has_key("body") and p["body"]:
        post = SellOfferPost(sell_offer=SellOfferPost.objects.get(pk=sell_offer_id))
        form = SellOfferPostForm(p, instance=post)
        post = form.save()
        post.save()

    return HttpResponseRedirect(reverse('views.sell_offer_page', args=[item_id, sell_offer_id]))

我认为后期行动实际上并没有找到它的观点 以下是错误消息

Request Method: POST
Request URL:    http://......:8000/item/1/sell_offer/4/add_post/
Django Version: 1.3.1
Exception Type: TypeError
Exception Value:    
sell_offer_add_post() got an unexpected keyword argument 'item_id'
Exception Location: /usr/local/lib/python2.6/dist-packages/Django-1.3.1-py2.6.egg/django/core/handlers/base.py in get_response, line 111

我在这里做错了什么?

2 个答案:

答案 0 :(得分:0)

确保您还没有进一步调用其他视图sell_offer_add_post()

答案 1 :(得分:0)

尝试将您的视图签名设置为:

def sell_offer_add_post(request, item_id=None, sell_offer_id=None):

我还没有测试,但如果我没记错,当你在URL中使用命名捕获组时,我认为django会尝试传递命名关键字。您需要检查视图中的值。