2012-05-02 76 views
1

我要通过这本书的Django 1.0网站开发,你建立一个小型社交书签应用。我在第5章创建一个表单来添加书签,虽然我遵循了指示,并且一直在这个错误上挣扎了好几天。我得到的错误:Django的 - AttributeError的=>“设置”对象有没有属性“得到”

AttributeError at /save/ 
'set' object has no attribute 'get' 

错误被扔在模板的第6行{{form.as_p}}

的views.py代码:

def bookmark_save_page(request): 
    if request.method == 'POST': 
     form = BookmarkSaveForm(request) 
     if form.is_valid(): 
      # create or get link. 
      link, dummy = Link.objects.get_or_create(
       url=form.cleaned_data['url'] 
      ) 
      # create or get bookmark. 
      bookmark, created = Bookmark.objects.get_or_create(
       user=request.user, 
       link=link 
      ) 
      # if bookmark is being updated, clear the old tag list 
      if not created: 
       bookmark.tag_set.clear() 
      # create new tag list 
      tag_names = form.cleaned_data['tags'].split() 
      for tag_name in tag_names: 
       tag, dummy = Tag.objects.get_or_create(name=tag_name) 
       bookmark.tag_set.add() 
      # save bookmark to database 
      bookmark.save() 
      return HttpResponseRedirect(
       '/user/%s/' % request.user.username 
      ) 
     else: 
      form = BookmarkSaveForm() 
      variables = RequestContext(request, { 
       'form' : form 
      }) 
      return render_to_response('bookmark_save.html', variables) 

而模板的代码是:

{% extends "base.html" %} 
{% block title %}Save Bookmark{% endblock %} 
{% block head %}Save Bookmark{% endblock %} 
{% block content %} 
<form method="post" action=".">{% csrf_token %} 
    **{{ form.as_p }}** 
    <input type="submit" value="save" /> 
</form> 
{% endblock %} 

任何帮助将不胜感激,因为我被困在这一点,在书中,似乎无法找到 一个答案。谢谢!

+1

全部追溯的非快捷方式。 –

+0

@ IgnacioVazquez-Abrams:“追溯或它没有发生”,大声笑 – jdi

回答

0

这是你的错误吗?

for tag_name in tag_names: 
    tag, dummy = Tag.objects.get_or_create(name=tag_name) 
    bookmark.tag_set.add() # not adding the tag? 

不是:bookmark.tag_set.add(tag).add()实际上并不会导致错误,但我知道您并未添加标签。

没有看到回溯,我猜测。

我的另一个猜测是,你可能会使用的RequestContext错了吗?

return render_to_response('bookmark_save.html', 
           {'form': form}, 
           context_instance=RequestContext(request)) 

我相信你现在正在使用它的方式是为使用一个HttpResponse()

+0

感谢您的帮助。原来这是一个Django版本问题。我正在使用的书是Django 1.0,但我已经安装了1.4。该错误实际上是在表单的代码中,并为文本字段设置属性。我删除了他们,现在代码工作正常。 –

相关问题