2012-05-02 75 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。該錯誤實際上是在表單的代碼中,併爲文本字段設置屬性。我刪除了他們,現在代碼工作正常。 –

相關問題