Python 如何使用Django中的form.cleaned_data.get()将数据从视图传递到成功模板?
我正在建立一个基本的新冠病毒检测预约系统。一切正常;我从用户那里获取表单中的数据,并将其保存到数据库中。但我试图在表单成功页面上显示一些数据。例如,用户在单击提交按钮后以表单形式输入其详细信息,如姓名、数据、时间等。我希望表单的名称、日期和时间显示在成功页面上。我甚至尝试过这个,但我得到了一个错误,比如: NoReverseMatch at/covid_试验 找不到参数“({'name':'Popes','test_date':datetime.date(2021,4,23),'test_time':datetime.time(18,0)},”)的“success”的相反项。已尝试1个模式:[“成功$”] 以下是错误的屏幕截图: 下面是我的代码: 型号.pyPython 如何使用Django中的form.cleaned_data.get()将数据从视图传递到成功模板?,python,django,django-views,django-forms,django-templates,Python,Django,Django Views,Django Forms,Django Templates,我正在建立一个基本的新冠病毒检测预约系统。一切正常;我从用户那里获取表单中的数据,并将其保存到数据库中。但我试图在表单成功页面上显示一些数据。例如,用户在单击提交按钮后以表单形式输入其详细信息,如姓名、数据、时间等。我希望表单的名称、日期和时间显示在成功页面上。我甚至尝试过这个,但我得到了一个错误,比如: NoReverseMatch at/covid_试验 找不到参数“({'name':'Popes','test_date':datetime.date(2021,4,23),'test_tim
from django.db import models
# Create your models here.
class Covid_Test_Model(models.Model):
gender_chooice = [
('Male', 'Male'),
('Female', 'Female')
]
name = models.CharField(max_length=100, null=False)
age = models.IntegerField(null=False)
gender = models.CharField(max_length=20, choices=gender_chooice, default='Male', null=False)
phone = models.CharField(max_length=15, null=False)
email = models.EmailField(max_length=100, null=False)
adhaar_no = models.CharField(max_length=16, null=False)
address = models.TextField(null=False)
date = models.DateField(null=False)
Time = models.TimeField(auto_now=False, auto_now_add=False, null=False)
def __str__(self) -> str:
return self.name
from django.shortcuts import render, redirect
# Create your views here.
from covid_test_app.forms import Covid_Test_Form
def covid_test(request):
if request.method == 'POST':
form = Covid_Test_Form(request.POST)
if form.is_valid():
form.save()
name = form.cleaned_data.get("name")
test_date = form.cleaned_data.get("date")
test_time = form.cleaned_data.get("Time")
print(name)
c = {
'name': name,
'test_date': test_date,
'test_time': test_time
}
return redirect('success', c)
else:
form = Covid_Test_Form()
context = {
'form': form,
}
return render(request, 'covid_test.html', context)
from django import forms
from django.forms import fields
from .models import Covid_Test_Model
class Covid_Test_Form(forms.ModelForm):
class Meta:
model = Covid_Test_Model
fields = ["name", "age", "gender", "phone", "email", "adhaar_no", "address", "date", "Time"]
widgets = {
"name": forms.TextInput(attrs={'class': 'form-control'}),
"age": forms.TextInput(attrs={'class': 'form-control', 'type': 'number'}),
"gender": forms.Select(attrs={'class': 'form-control'}),
"phone": forms.TextInput(attrs={'class': 'form-control', 'type': 'number'}),
"email": forms.TextInput(attrs={'class': 'form-control'}),
"adhaar_no": forms.TextInput(attrs={'class': 'form-control'}),
"address": forms.Textarea(attrs={'class': 'form-control', 'rows': 2}),
"date": forms.TextInput(attrs={'class': 'form-control'}),
"Time": forms.TextInput(attrs={'class': 'form-control'}),
}
视图.py
from django.db import models
# Create your models here.
class Covid_Test_Model(models.Model):
gender_chooice = [
('Male', 'Male'),
('Female', 'Female')
]
name = models.CharField(max_length=100, null=False)
age = models.IntegerField(null=False)
gender = models.CharField(max_length=20, choices=gender_chooice, default='Male', null=False)
phone = models.CharField(max_length=15, null=False)
email = models.EmailField(max_length=100, null=False)
adhaar_no = models.CharField(max_length=16, null=False)
address = models.TextField(null=False)
date = models.DateField(null=False)
Time = models.TimeField(auto_now=False, auto_now_add=False, null=False)
def __str__(self) -> str:
return self.name
from django.shortcuts import render, redirect
# Create your views here.
from covid_test_app.forms import Covid_Test_Form
def covid_test(request):
if request.method == 'POST':
form = Covid_Test_Form(request.POST)
if form.is_valid():
form.save()
name = form.cleaned_data.get("name")
test_date = form.cleaned_data.get("date")
test_time = form.cleaned_data.get("Time")
print(name)
c = {
'name': name,
'test_date': test_date,
'test_time': test_time
}
return redirect('success', c)
else:
form = Covid_Test_Form()
context = {
'form': form,
}
return render(request, 'covid_test.html', context)
from django import forms
from django.forms import fields
from .models import Covid_Test_Model
class Covid_Test_Form(forms.ModelForm):
class Meta:
model = Covid_Test_Model
fields = ["name", "age", "gender", "phone", "email", "adhaar_no", "address", "date", "Time"]
widgets = {
"name": forms.TextInput(attrs={'class': 'form-control'}),
"age": forms.TextInput(attrs={'class': 'form-control', 'type': 'number'}),
"gender": forms.Select(attrs={'class': 'form-control'}),
"phone": forms.TextInput(attrs={'class': 'form-control', 'type': 'number'}),
"email": forms.TextInput(attrs={'class': 'form-control'}),
"adhaar_no": forms.TextInput(attrs={'class': 'form-control'}),
"address": forms.Textarea(attrs={'class': 'form-control', 'rows': 2}),
"date": forms.TextInput(attrs={'class': 'form-control'}),
"Time": forms.TextInput(attrs={'class': 'form-control'}),
}
Forms.py
from django.db import models
# Create your models here.
class Covid_Test_Model(models.Model):
gender_chooice = [
('Male', 'Male'),
('Female', 'Female')
]
name = models.CharField(max_length=100, null=False)
age = models.IntegerField(null=False)
gender = models.CharField(max_length=20, choices=gender_chooice, default='Male', null=False)
phone = models.CharField(max_length=15, null=False)
email = models.EmailField(max_length=100, null=False)
adhaar_no = models.CharField(max_length=16, null=False)
address = models.TextField(null=False)
date = models.DateField(null=False)
Time = models.TimeField(auto_now=False, auto_now_add=False, null=False)
def __str__(self) -> str:
return self.name
from django.shortcuts import render, redirect
# Create your views here.
from covid_test_app.forms import Covid_Test_Form
def covid_test(request):
if request.method == 'POST':
form = Covid_Test_Form(request.POST)
if form.is_valid():
form.save()
name = form.cleaned_data.get("name")
test_date = form.cleaned_data.get("date")
test_time = form.cleaned_data.get("Time")
print(name)
c = {
'name': name,
'test_date': test_date,
'test_time': test_time
}
return redirect('success', c)
else:
form = Covid_Test_Form()
context = {
'form': form,
}
return render(request, 'covid_test.html', context)
from django import forms
from django.forms import fields
from .models import Covid_Test_Model
class Covid_Test_Form(forms.ModelForm):
class Meta:
model = Covid_Test_Model
fields = ["name", "age", "gender", "phone", "email", "adhaar_no", "address", "date", "Time"]
widgets = {
"name": forms.TextInput(attrs={'class': 'form-control'}),
"age": forms.TextInput(attrs={'class': 'form-control', 'type': 'number'}),
"gender": forms.Select(attrs={'class': 'form-control'}),
"phone": forms.TextInput(attrs={'class': 'form-control', 'type': 'number'}),
"email": forms.TextInput(attrs={'class': 'form-control'}),
"adhaar_no": forms.TextInput(attrs={'class': 'form-control'}),
"address": forms.Textarea(attrs={'class': 'form-control', 'rows': 2}),
"date": forms.TextInput(attrs={'class': 'form-control'}),
"Time": forms.TextInput(attrs={'class': 'form-control'}),
}
Success.html这是我想显示上一页填写表单的用户数据的地方
{% extends 'base.html' %}
{% load static %}
{% block extrahead %}
<link href="{% static 'styles/success.css' %}" rel="stylesheet">
{% endblock %}
{% block content %}
<div class="container-fluid bg">
<div class="card-container">
<div class="bigcard">
<div class="mx-5 my-5 d-flex flex-column justify-center">
<h4 class="text-center my-3 display-4 text-info">Success!</h4>
{# here I am accessing data that I passed as dictionary from my views #}
<p class="text-center lead">Dear {{ name }} your covid test appointment has been book on {{ test_date }} at {{ test_time }}</p>
<a type="submit" href="{% url 'home' %}" class="btn btn-info text-white my-4">Back To Home</a>
</div>
</div>
</div>
</div>
{% endblock %}
{%extends'base.html%}
{%load static%}
{%block extrahead%}
{%endblock%}
{%block content%}
成功!
{#这里我正在访问作为字典从视图传递的数据#}
亲爱的{{name}您的新冠病毒检测预约已于{{test_date}}于{test_time}预约
{%endblock%}
您可以在会话变量中设置插入的模型ID,重定向,然后从该会话变量中查找模型并显示信息,而不是通过URL发送名称、日期和时间。@TimNyborg这是我没有听说过的,我是django和web的新手。你能和我分享一些教程或资源吗?Django自己的文档是一个很好的地方,尤其是在re。在视图中设置和使用会话值: