python - Django FutureFqType 匹配查询不存在
问题描述
我正在使用 Django 建立一个新网站,并想从 sql 获取对象名称。但它一直输出错误objects.get匹配查询不存在我需要在哪里修改代码?
意见
def predict1(request):
name = ''
loginstatus = False
try:
name = request.session['name']
loginstatus = True
except:
return HttpResponseRedirect('/login/?back=未來型預測')
category_id = FutureMember.objects.get(member_name=name).type
cname = FutureFqType.objects.get(type_id=category_id).type_name
return render_to_response('predicts.html', {'cname': cname,'loginstatus': loginstatus, 'name': name})
html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<div><h2>根據投資人屬性測驗結果,您屬於<font color="#75CA20">{{ cname }} 您好! {{ name }}</font></h2>
<form action="/predict/" method="post">
</div>
</body>
</html>
楷模
class FutureFqType(models.Model):
type_id = models.CharField(primary_key=True, max_length=2)
type_name = models.CharField(max_length=20)
type_describe = models.TextField(blank=True, null=True)
type_score = models.CharField(max_length=20)
class Meta:
managed = False
db_table = 'future_fq_type'
我期望 {{ cname }} 的输出是数据,但实际不能输出它出来一个错误 FutureFqType 匹配查询不存在。
新观点
from django.shortcuts import get_object_or_404
def predict1(request):
loginstatus = False
try:
name = request.session["name"]
loginstatus = True
except KeyError:
return HttpResponseRedirect("/login/?back=未來型預測")
category_id = get_object_or_404(FutureMember, member_name=name).type
cname = get_object_or_404(FutureFqType, type_id=category_id).type_name
return render_to_response(
"predicts.html",
{"cname": cname, "loginstatus": loginstatus, "name": name},
)
页面输出 在此处输入图像描述
解决方案
from django.shortcuts import HttpResponse, get_object_or_404, redirect, render
def predict1(request):
loginstatus = False
try:
name = request.session["name"]
loginstatus = True
except KeyError:
return redirect("/login/?back=未來型預測")
try:
member = FutureMember.objects.get(member_name=name)
except FutureMember.DoesNotExist:
msg = f"<h1>FutureMember not found with member_name=`{name}`</h1>"
return HttpResponse(msg)
try:
fqtype = FutureFqType.objects.get(type_id=member.type)
except FutureFqType.DoesNotExist:
msg = f"<h1>FutureFqType not found with type_id=`{member.type}`</h1>"
return HttpResponse(msg)
else:
cname = fqtype.type_name
data = {"cname": cname, "loginstatus": loginstatus, "name": name}
return render("predicts.html", data)
推荐阅读
- python - 运行 Python 脚本时出错,Web Scraping 代码
- java - 更新数组中的特定对象元素
- python - 我在 AVL 树搜索问题上遇到错误
- flutter - 带有 spaceAround 子列的拉伸行
- python - 根据某些条件将第一次出现保留在一个列中
- php - 列出按分类和子分类分组的帖子
- asynchronous - 为什么延续异步执行?
- python - 在我的带有 python tkinter 的计算器 GUI 中,当我再次编写表达式时,条目小部件中的“错误”消息不会自动删除
- php - 工厂关系返回 null laravel 测试
- sql - Oracle SQL 中需要 12 个未来数字