Python 使用重定向()时,视图未返回HttpResponse对象
我尝试在django中创建模型表单以向我的模型添加新记录,但出现以下错误:Python 使用重定向()时,视图未返回HttpResponse对象,python,django,django-views,modelform,Python,Django,Django Views,Modelform,我尝试在django中创建模型表单以向我的模型添加新记录,但出现以下错误: The view post.views.add_job_resume didn't return an object. It returned None instead. 这是我的文件注意,在这个文件中,我有比我在这里写的更多的代码: view.py forms.py models.py 添加_job_resume.html 我搜索了很多这个错误,但我不能解决它!发生了什么事 重定向不是问题所在。问题是您的表单无效,如
The view post.views.add_job_resume didn't return an object. It returned None instead.
这是我的文件注意,在这个文件中,我有比我在这里写的更多的代码:
view.py
forms.py
models.py
添加_job_resume.html
我搜索了很多这个错误,但我不能解决它!发生了什么事 重定向不是问题所在。问题是您的表单无效,如果发生这种情况,视图不会改变任何内容
您应该将最后一行取消缩进一级,以便它捕获此案例。重定向不是问题所在。问题是您的表单无效,如果发生这种情况,视图不会改变任何内容
您应该将最后一行取消缩进一级,以便它捕获此案例。这与重定向无关。。它本身您刚刚忘记了一个代码路径。该方法可能确实是POST,但表单无效。因此,第一个if中的条件满足,但第二个if中的条件不满足。现在,您的视图将不返回任何内容,因此在这种情况下不会返回任何内容 通常只需重新提交模板,但现在使用的是无效表单,这样表单就可以显示错误,如:
def add_job_resume(request):
if request.method=="POST":
form = AddJobForm(request.POST)
if form.is_valid():
job_resume = form.save(commit=False)
job_resume.user= request.user
job_resume.save()
return redirect('view_job_resume')
else:
form = AddJobForm()
# Not placed under the else
return render(
request,
'education/job_research_education_records/job_resume/add_job_resume.html',
{'form': form}
)
请注意,渲染不会放在else零件下。实际上,无论方法是POST,表单无效,还是方法不是POST,我们都会呈现页面并使用呈现的页面进行响应。这与重定向无关。。它本身您刚刚忘记了一个代码路径。该方法可能确实是POST,但表单无效。因此,第一个if中的条件满足,但第二个if中的条件不满足。现在,您的视图将不返回任何内容,因此在这种情况下不会返回任何内容 通常只需重新提交模板,但现在使用的是无效表单,这样表单就可以显示错误,如:
def add_job_resume(request):
if request.method=="POST":
form = AddJobForm(request.POST)
if form.is_valid():
job_resume = form.save(commit=False)
job_resume.user= request.user
job_resume.save()
return redirect('view_job_resume')
else:
form = AddJobForm()
# Not placed under the else
return render(
request,
'education/job_research_education_records/job_resume/add_job_resume.html',
{'form': form}
)
请注意,渲染不会放在else零件下。事实上,无论该方法是POST,表单无效,还是该方法不是POST,我们都会呈现页面并使用呈现的页面进行响应。如果该方法是POST,但表单无效,则您不会在视图中执行任何操作。如果该方法是POST,但表单无效,那你就不要在你看来做任何事。谢谢!解决了一个错误:我填写了几次表单,但没有一次能够生成有效的表单。“残疾的问题是什么?”威廉·范-onsem@mostafarahnama:您可以在呈现form.errors之前将其打印出来,以便在服务器的标准输出上打印错误。请注意,在else情况下只应构造一个新表单,否则错误将不会显示在页面rendering.Ahhaaa上。在else情况下如何构造新表单@威廉·范-onsem@mostafarahnama:上述代码片段中已经存在这种情况。我只是说,如果是帖子,你不应该创建一个新的,否则错误不会出现,因为从技术上讲,你会呈现一个不同的表单。谢谢!解决了一个错误:我填写了几次表单,但没有一次能够生成有效的表单。“残疾的问题是什么?”威廉·范-onsem@mostafarahnama:您可以在呈现form.errors之前将其打印出来,以便在服务器的标准输出上打印错误。请注意,在else情况下只应构造一个新表单,否则错误将不会显示在页面rendering.Ahhaaa上。在else情况下如何构造新表单@威廉·范-onsem@mostafarahnama:上述代码片段中已经存在这种情况。我只是说,如果是帖子,你不应该创建一个新的,否则错误不会出现,因为从技术上讲,你会呈现一个不同的形式。
class JobRecord(models.Model):
user = models.ForeignKey(User, on_delete=models.PROTECT)
title = models.TextField(max_length=250, blank=False)
explains = models.TextField(max_length=500, blank=True)
post = models.TextField(max_length=100, blank=False)
organization = models.TextField(max_length=100, blank=False)
time_start = models.TextField(max_length=100)
time_end = models.TextField(max_length=100)
upload_url = models.FileField(upload_to='job-resume-files/')
def __str__(self):
return self.title
<form method="post" >
{% csrf_token %}
{{form.as_p }}
<button type="submit" class="btn btn-info">add</button>
</form>
urlpatterns = [
path('edu/resume/job/', views.view_job_resume, name='view_job_resume'),
path('edu/resume/job/add', views.add_job_resume, name='add_job_resume')]
def add_job_resume(request):
if request.method=="POST":
form = AddJobForm(request.POST)
if form.is_valid():
job_resume = form.save(commit=False)
job_resume.user= request.user
job_resume.save()
return redirect('view_job_resume')
else:
form = AddJobForm()
# Not placed under the else
return render(
request,
'education/job_research_education_records/job_resume/add_job_resume.html',
{'form': form}
)