简体   繁体   English

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

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

so I have a very simple blog app and I'm trying to figure out why the data entered in the form doesn't save to the database and it doesn't redirect me to my index page. 因此,我有一个非常简单的博客应用程序,我试图弄清为什么在表单中输入的数据没有保存到数据库,并且没有将我重定向到索引页面。

forms.py 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 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 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)

I think the problem is likely to be the first line of your view. 我认为问题很可能是您观点的第一线。

if request == 'POST':

should be: 应该:

if request.method == 'POST':

To save an Object into database instead of 将对象保存到数据库而不是

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

use the best way: 使用最佳方法:

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

It will be automatically saved 它将自动保存

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

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