python - 是什么导致我的输入没有保存到我的 django 模型数据库中?
问题描述
我正在尝试使用 Django 创建一个测验网站。我创建了一个模型表单,其中输入框出现在网站上,旁边有一个提交按钮。根据 cmd,向其中输入文本并提交它就可以正常工作并发送 POST 请求。但是,它似乎没有将输入保存到模型中,这是我想要实现的。
视图.py
from django.http import HttpResponse
from django.shortcuts import render, redirect
from .models import Question, InputText
from .forms import AnswerForm
# Only shows relevant view
def kvizpost(request):
if request.method == 'POST':
form = AnswerForm(request.POST)
if form.is_valid():
text = form.cleaned_data()
text.save()
return redirect('kviz:kviz')
else:
form = AnswerForm()
return render(request, 'vprasanja/kviz.html', {'form' : form})
表格.py
from django import forms
from kvizapp.models import InputText
class AnswerForm(forms.ModelForm):
class Meta:
model = InputText
fields = ('vnesi',)
模型.py
from django.db import models
# Only shows relevant model
class InputText(models.Model):
vnesi = models.CharField(max_length=100)
kviz.html
{% block body %}
<form action = "/kviz/" method="post">
{% csrf_token %}
{{ form.as_p }}
<br>
<input type="submit" value="Vnos">
</form>
{% endblock %}
编辑:我被要求显示 URL。
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'),
path('<kviz/', views.kviz, name='kviz'), # The kviz view just renders the page.
]
解决方案
if form.is_valid():
form.save()
return redirect('kviz:kviz')
else:
# if form is not valid
return render(request, 'vprasanja/kviz.html', {'form' : form})
在表单实例上使用save()方法保存表单,因为您使用的是ModelForm一切都应该可以正常工作。
参考:https ://docs.djangoproject.com/en/2.2/topics/forms/modelforms/#the-save-method
推荐阅读
- android - Arduino,通过蓝牙从 Xamarin 接收字节数组
- windows - 在工作副本修订时复制/粘贴到 SVN 上文件的链接
- sql - 如何找出视图中的表(SQL Server Management Studio)
- java - 替代多个构造函数
- sql-server - 无效的对象名称“CHANGGETABLE”
- c# - 如何在“MailMessage”中包含“HTML”标签
- java - 可比的运行时测量与 Java 中的 for 循环
- azure - 从 Azure DevOps Pipeline 向 Gemfury 推送 NuGet 时出错:不允许使用 405 方法
- javascript - Javascript 自动检查带有 cookie 保存值的收音机
- spring - 部署在 AWS Lambda 上的 Spring Cloud 函数在 FunctionalSpringApplication.java:102 处出现 NullPointerException 失败