【发布时间】:2021-07-04 22:28:10
【问题描述】:
我开始学习 Django、Python 和 SQLite 并制作一个小项目。问题是:我不知道如何在数据库上编写表单。我知道如何在浏览器上阅读和发布,但在编写表单内容并将其保存到数据库时遇到问题。
这是我的代码:
views.py
from django import forms
from django.shortcuts import render
from .models import Inscricao, Avaliacao
NOTA = ( ("1", "1"), ("2", "2"), ("3", "3"), ("4", "4"), ("5", "5"), ("6", "6"), ("7", "7"), ("8", "8"), ("9", "9"), ("10", "10") )
FILMES = ( ("1", "Horizonte Travessia"), ("2", "Até o Próximo Domingo"), ("3", "Uma Ameaça No Ar"), ("4", "Um Passageiro"),
("5", "Todas As Coisas Que Não Foram Ditas Semana Passada"), ("6", "Mãe é Ventre Estelar"), ("7", "OID'ÁGUA"), ("8", "Normal"),
("9", "Moremos Aqui, Filha"), ("10", "Chorume"),)
ESTADOS = ( ("1", "AC"), ("2", "AL"), ("3", "AP"), ("4", "AM"), ("5", "BA"), ("6", "CE"), ("7", "ES"), ("8", "GO"), ("9", "MA"), ("10", "MT"),
("11", "MS"), ("12", "MG"))
class formInscricao(forms.Form):
nome = forms.CharField(label="Nome", max_length=64)
idade = forms.IntegerField(min_value=16, label="Idade")
email = forms.EmailField(max_length=64, label="Email")
estado = forms.ChoiceField(label="Estado", choices=ESTADOS)
cidade = forms.CharField(max_length=64, label="Cidade")
class formAvaliacao(forms.Form):
nomeAvaliador = forms.CharField(label="Nome")
idadeAvaliador = forms.IntegerField(label="Idade")
emailAvaliador = forms.EmailField(label="Email")
filme = forms.ChoiceField(label="Filme", choices=FILMES)
nota = forms.ChoiceField(choices=NOTA,label="Nota")
avaliacao = forms.CharField(label="Avaliação")
...
def inscricao(request):
if request.method == "POST":
form = formInscricao(request.POST)
if form.is_valid():
nome = form.cleaned_data["nome"]
nome.save()
idade = form.cleaned_data["idade"]
idade.save()
email = form.cleaned_data["email"]
email.save()
estado = form.cleaned_data["estado"]
estado.save()
cidade = form.cleaned_data["cidade"]
cidade.save()
else:
render(request, "cinema/inscricao.html", {
"formInscricao": formInscricao,
})
return render(request, "cinema/inscricao.html", {
"formInscricao": formInscricao(),
})
def avaliacao(request):
if request.method == "POST":
form = formAvaliacao(request.POST)
if form.is_valid():
nomeAvaliador = form.cleaned_data["nomeAvaliador"]
nomeAvaliador.save()
idadeAvaliador = form.cleaned_data["idadeAvaliador"]
idadevaliador.save()
emailAvaliador = form.cleaned_data["emailAvaliador"]
emailAvaliador.save()
filme = form.cleaned_data["filme"]
filme.save()
nova = form.cleaned_data["nota"]
nova.save()
avalicao = form.cleaned_data["avaliacao"]
avaliacao.save()
else:
render(request, "cinema/inscricao.html", {
"formAvaliacao": formAvaliacao(),
})
return render(request, "cinema/avaliacao.html", {
"formAvaliacao": formAvaliacao()
})
模型.py
from django.db import models
from django.db.models import Model
class Inscricao(models.Model):
nome = models.CharField(max_length=64)
idade = models.IntegerField()
email = models.EmailField(max_length=64)
estado = models.CharField(max_length=64)
cidade = models.CharField(max_length=64)
def __str__(self):
return f"{self.id}: {self.nome}, {self.idade}, {self.email}, {self.estado}, {self.cidade}"
class Avaliacao(models.Model):
nomeAvaliador = models.CharField(max_length=64)
idadeAvaliador = models.IntegerField()
emailAvaliador = models.EmailField(max_length=64)
filme = models.CharField(max_length=64)
nota = models.CharField(max_length=64)
avaliacao = models.CharField(max_length=300)
def __str__(self):
return f"{self.id}: {self.nomeAvaliador}, {self.idadeAvaliador}, {self.emailAvaliador}, {self.filme}, {self.nota}, {self.avaliacao}"
avaliacao.html:
{% extends "cinema/layout.html" %}
{% block body %}
<h1> Formulário de avaliação </h1>
<br><br><br>
<div class="introducao">
<form method="post">
{% csrf_token %}
{{ formAvaliacao }}
<br><br>
<button type="submit">Enter</button>
</form>
</div>
{% endblock %}
inscricao.html:
{% extends "cinema/layout.html" %}
{% block body %}
<h1> Formulário de inscrição</h1>
<br><br><br>
<div class="introducao">
<form method="post">
{% csrf_token %}
<br><br>
{{ formInscricao }}
<br><br>
<button type="submit">Enter</button>
</form>
</div>
{% endblock %}
我进行了迁移,但是,当我单击提交按钮时,图像上出现错误:
【问题讨论】:
标签: python-3.x sqlite django-models django-views django-forms