Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django~WSGIRequest,带有通过get\u context\u data方法添加的表单_Python_Django_Django Forms - Fatal编程技术网

Python Django~WSGIRequest,带有通过get\u context\u data方法添加的表单

Python Django~WSGIRequest,带有通过get\u context\u data方法添加的表单,python,django,django-forms,Python,Django,Django Forms,我在访问我的页面时遇到以下错误: 呈现时捕获AttributeError:“WSGIRequest”对象没有属性“get” 错误出现在我的html的第17行,这是输出form.as\p的那一行 html如下所示: {% extends "base.htm" %} {% block content %} {% if story_list %} {% for story in story_list %} <div class="Story">

我在访问我的页面时遇到以下错误:

呈现时捕获AttributeError:“WSGIRequest”对象没有属性“get”

错误出现在我的html的第17行,这是输出form.as\p的那一行

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 %}
其中,createNewStoryForm方法就是这样做的:

def createNewStoryForm(request):
    return StoryForm(request)
故事形式就是这样:

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”或者什么都不传递,是吗?

可能你是对的,你传递的是
request
,而不是
request.POST
request.GET
或者
request.request
给表单的构造函数。见以下文件:


我可以看到两个问题。简单的一点是,您可以简单地替换这一行:

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

最后,这不应该:

class StoryShowView(ListView):
    model = StoryForm
是:


哦,模型应该是故事,而不是(派生的)故事形式吗?是的,因为
StoryForm
不是模型。列表视图获取一个模型,然后在名为
object\u List
的上下文中返回一个对象,其中包含来自查询集的项(您可以通过
get\u queryset()
覆盖该项)。在模板中,您只需在
对象列表
上迭代即可。
context['form'] = createNewStoryForm(self.request)
context['form'] = StoryForm(request.POST, request.FILES)
class StoryShowView(ListView):
    model = StoryForm
class StoryShowView(ListView):
    model = Story