![](/img/trans.png)
[英]Django CBV UpdateView not saving form to database. (Django 2.0)
[英]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.