2012-05-20 21 views
1

當我訪問我的網頁我得到這個錯誤:的Django〜WSGIRequest與形式通過get_context_data方法添加

陷入AttributeError的同時渲染:「WSGIRequest」對象有沒有屬性「得到」

錯誤踢在我的HTML,這是輸出form.as_p

的HTML看起來像這樣行了行了「17」:

{% extends "base.htm" %} 

{% block content %} 
{% if story_list %} 
    {% for story in story_list %} 
     <div class="Story"> 
      <a href="#">{{ story.title }}</a> 
     </div> 
    {% endfor %} 
{% else %} 
    <p>No stories are present - enter one below</p> 
{% endif %} 
<h3>Create a new story</h3> 
<form action="/addStory" method="post"> 
    {% csrf_token %} 
    {{ form.as_p }} ***THIS IS LINE 17*** 
    <input type="submit" value="Submit"/> 
</form> 
{% endblock %} 

問題是我有一個觀點,兩個的東西,並從django教程取代get_context_data方法將第二項添加到django上下文。因爲,恩,這就是我要做的,riiiiiiiiight?

#for showing of the stories! 
class StoryShowView(ListView): 
    model = StoryForm 

    def get_queryset(self): 
     return getStoryItemsForUser(self.request) 

    def get_context_data(self, **kwargs): 
     context = super(StoryShowView,self).get_context_data(**kwargs) 
     context['form'] = createNewStoryForm(self.request) 
     return context 

哪裏,好了,方法createNewStoryForm只是做這個:

def createNewStoryForm(request): 
    return StoryForm(request) 

和StoryForm僅僅是這樣的:

class StoryForm(ModelForm): 
    class Meta: 
     model = Story 
     ordering = ['create_date'] 

與故事模式是正常模式,這可能ISN不是問題的一部分,但是,嘿,我是一個切割和粘貼,所以在這裏!

class Story(models.Model): 
    user = models.ForeignKey(User) 
    post = models.ForeignKey(Post) 
    title = models.CharField(max_length=100) 
    is_closed = models.BooleanField() 
    is_random = models.BooleanField() # for uncategorised stories. Only one of these. 
    result = models.CharField(max_length=20) #how did the relo work out? 
    create_date = models.DateTimeField('date created') 
    def __unicode__(self): 
     return self.title 

任何想法我做錯了什麼?

UPDATE: 啊,這是行::

return StoryForm(request) 

我把它我可以在「request.POST」或沒有通過,是嗎?

回答

1

也許你是對的,你通過request而不是request.POST,reqest.GETrequest.REQUEST到您的窗體的構造函數。查看how to use forms商務部:

def contact(request): 
    if request.method == 'POST': # If the form has been submitted... 
     form = ContactForm(request.POST) # A form bound to the POST data 
     if form.is_valid(): # All validation rules pass 
      # Process the data in form.cleaned_data 
      # ... 
      return HttpResponseRedirect('/thanks/') # Redirect after POST 
    else: 
     form = ContactForm() # An unbound form 

    return render_to_response('contact.html', { 
     'form': form, 
    }) 
1

兩個問題,我可以看到。最簡單的一個是,你可以簡單地替換此行:

context['form'] = createNewStoryForm(self.request) 

context['form'] = StoryForm(request.POST, request.FILES) 

最後不應該這樣:

class StoryShowView(ListView): 
    model = StoryForm 

要:

class StoryShowView(ListView): 
    model = Story 
+0

哦,是故事的模型,而不是(派生的)StoryForm? – bharal

+0

是的,因爲'StoryForm'不是一個模型。列表視圖需要一個模型,然後在名爲'object_list'的上下文中返回一個對象,其中包含查詢集中的項目(您可以通過'get_queryset()'重寫)。在你的模板中,你只需遍歷'object_list'。 –

相關問題