1

自分のページにアクセスすると、次のエラーが発生します。

レンダリング中にAttributeErrorが発生しました:'WSGIRequest'オブジェクトに属性'get'がありません

エラーは、form.as_pを出力する行である私のhtmlの行「17」で発生します。

htmlは次のようになります。

{% 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 %}

問題は、2つのことを行うビューがあり、djangoチュートリアルから、get_context_dataメソッドをオーバーライドして、2番目の項目を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']

ストーリーモデルは通常のモデルであり、おそらく問題の一部ではありませんが、ねえ、私はカットアンドペーストなので、ここに行きます!

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

私が間違っていることについて何か考えはありますか?

更新:ああ、それは次の行でした::

return StoryForm(request)

「request.POST」を渡すことも、何も渡さないこともできますね。

4

2 に答える 2

1

おそらくあなたは正しいので、のrequest代わりにrequest.POSTreqest.GETまたはrequest.REQUESTフォームのコンストラクターに渡していたのでしょう。フォームの使用方法に関するドキュメントを参照してください。

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,
    })
于 2012-05-21T07:50:10.090 に答える
1

私が見ることができる2つの問題。簡単なのは、この行を簡単に置き換えることができるということです。

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

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

最後にこれをすべきではありません:

class StoryShowView(ListView):
    model = StoryForm

なれ:

class StoryShowView(ListView):
    model = Story
于 2012-05-21T12:06:04.297 に答える