Python Django~WSGIRequest,带有通过get\u context\u data方法添加的表单
我在访问我的页面时遇到以下错误: 呈现时捕获AttributeError:“WSGIRequest”对象没有属性“get” 错误出现在我的html的第17行,这是输出form.as\p的那一行 html如下所示: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">
{% 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