繁体   English   中英

Django 2.0 Form未将数据保存到数据库

[英]Django 2.0 Form is not saving data to database

因此,我有一个非常简单的博客应用程序,我试图弄清为什么在表单中输入的数据没有保存到数据库,并且没有将我重定向到索引页面。

forms.py

from django import forms

class NewBlog(forms.Form):
  blogger = forms.CharField(max_length=20, widget=forms.TextInput(attrs=  
  {'placeholder' : 'Name'}))
  text = forms.CharField(widget=forms.Textarea(attrs={'placeholder' : 
  'Text'}))

new_blog.html

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>New Blog</title>
</head>
<body>
   <form action="{% url 'new_blog' %}" method="POST">
   {% csrf_token %}
   <h2>Write your blog here:</h2>
   {{ form }}
   <br>
   <input type="submit" value="Submit">
</form>
</body>
</html>

views.py

from django.shortcuts import render, redirect
from .models import BlogPost
from .forms import NewBlog

def index(request):
  blogs = BlogPost.objects.all()
  context = {'blogs' : blogs}
  return render(request, 'blog/index.html', context)

def newBlog(request):
   if request == 'POST':
     form = NewBlog(request.POST)
   if form.is_valid():
     blogger = form.cleaned_data['blogger'] 
     text = form.cleaned_data['text'] 
     new_blog = BlogPost(blogger = blogger, text = text)
     new_blog.save()
     return redirect('index')
   else:
     form = NewBlog()
  context = {'form' : form}
  return render(request, 'blog/new_blog.html', context)

我认为问题很可能是您观点的第一线。

if request == 'POST':

应该:

if request.method == 'POST':

将对象保存到数据库而不是

new_blog = BlogPost(blogger = blogger, text = text)
new_blog.save()

使用最佳方法:

BlogPost.objects.create(blogger = blogger, text = text)

它将自动保存

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM