首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django Value Error“视图capstone.views.home没有返回HttpResponse对象,而是返回了None。”

Django Value Error“视图capstone.views.home没有返回HttpResponse对象,而是返回了None。”
EN

Stack Overflow用户
提问于 2021-07-01 12:42:30
回答 2查看 65关注 0票数 1

我将用户输入到表单中的数据保存到Django的数据库中。当我提交表单时,值实际上会保存到数据库中。但我一直收到这个错误。不确定如何修复它?

views.py

代码语言:javascript
复制
def home(request):
    if request.method == "GET":
        form_for_post = {'form': PostForm()}
        return render(request, "capstone/home2.html", form_for_post)
    else: 
        if request.method == "POST":
            form = PostForm(request.POST)

        if form.is_valid():
            city = form.cleaned_data['city']
            place = Location.objects.create(username=request.user, city=city,)
            place.save()
        else:
            return render(request, "capstone/home2.html")

models.py

代码语言:javascript
复制
class User(AbstractUser):
    pass

class Location(models.Model):
    city = models.CharField(max_length=500) 
    username = models.ForeignKey('User', on_delete=models.CASCADE, 
    related_name='author', null=True, blank=True)

forms.py:

代码语言:javascript
复制
class PostForm(forms.Form):
    city = forms.CharField(max_length=500)

html格式的表单:

代码语言:javascript
复制
<form method="POST">
    {% csrf_token %}

    <label for="city">City:</label><br>
    <input type="text" id="city" name="city"><br>

    <input type="submit" value="Submit">
  </form> 
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-07-01 14:18:56

默认情况下,如果发出请求,它将是一个get请求,因此不需要添加if request.method == 'GET',如下所示

代码语言:javascript
复制
def home(request):
    form_for_post = {'form': PostForm()}
    if request.method == "POST":
       form = PostForm(request.POST)
       if form.is_valid():
          city = form.cleaned_data['city']
          place = Location.objects.create(username=request.user, city=city,)
          place.save()
          return render(request,"your_page_after_form_successfully_submited")
    return render(request, "capstone/home2.html",form_for_post)
票数 1
EN

Stack Overflow用户

发布于 2021-07-01 12:46:41

代码语言:javascript
复制
def home(request):
    if request.method == "POST":
        form = PostForm(request.POST)
        if form.is_valid():
            city = form.cleaned_data['city']
            place = Location.objects.create(username=request.user, city=city,)
            place.save()
        else:
            return render(request, "capstone/home2.html",form)
    form_for_post = {'form': PostForm()}
    return render(request, "capstone/home2.html", form_for_post)

试试这个

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68204405

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档