python - 如何在 Django 中使用 form.cleaned_data.get() 将数据从视图传递到成功模板?
问题描述
我正在构建一个基本的 Covid 考试预约系统。一切正常;我以表格形式从用户那里获取数据并将其保存到数据库中。但我正在尝试向表单成功页面显示其中的一些数据。就像用户在单击提交按钮后以姓名、数据、时间等形式输入他们的详细信息时一样。我希望在成功页面上呈现表单的名称、日期、时间。我什至试过这个,但我得到一个错误,比如:
NoReverseMatch at /covid_test 使用参数 '({'name': 'Popes', 'test_date': datetime.date(2021, 4, 23), 'test_time': datetime.time(18, 0)} ,)' 未找到。尝试了 1 种模式:['success$']
这是错误的屏幕截图:
以下是我的相同代码:
模型.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
视图.py
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)
表格.py
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 %}
解决方案
推荐阅读
- emscripten - Emscripten 传递 stl c++ map 参数
- javascript - 滑块图像已满时如何制作?反应式
- python - 关于导入 Python 的错误
- react-native - 如何在激活其他组件中的道具后重新渲染已经渲染的组件
- apache-spark - 火花工作卡住的原因可能是什么
- matlab - 编辑最小二乘线的 x 限制
- azure-application-insights - 如何更改 Live Metrics Stream 中的图表间隔
- angular - 如何使用 Angular 在本地运行 service worker
- php - 我的 php 代码不会将用户添加到 MySQL 数据库
- python - 为什么我的函数附加文件名字符串而不是文件本身的行?