Python 应用程序无法打印第一次输入的信息
视图.pyPython 应用程序无法打印第一次输入的信息,python,html,django,Python,Html,Django,视图.py from django.shortcuts import render, redirect from django.contrib import messages from .forms import AddmemberForm, Lookupmember from .models import Addmember def add_member(request): if request.method == 'POST': form = AddmemberFo
from django.shortcuts import render, redirect
from django.contrib import messages
from .forms import AddmemberForm, Lookupmember
from .models import Addmember
def add_member(request):
if request.method == 'POST':
form = AddmemberForm(request.POST)
if form.is_valid():
form.save()
messages.success(request, f'The member has been added.')
return redirect('front-page')
else:
form = AddmemberForm()
return render(request, 'members/add.html', {'form': form})
def list_member(request):
context = Addmember.objects.all()
return render(request, 'members/list_members.html', {'context': context})
def look_up_member(request):
if request.method == 'POST':
form = Lookupmember(request.POST)
if form.is_valid():
member_id = form.cleaned_data['member_id']
if Addmember.objects.filter(id = member_id):
for x in Addmember.objects.all():
if Addmember.objects.filter(id = member_id):
context = {
'name': x.name,
'email': x.email,
'address': x.address,
'city': x.city,
'state': x.state,
'zip_code': x.zip_code,
'phone_number': x.phone_number,
}
return render(request, 'members/about_members.html', context)
else:
messages.error(request, f'Error: This member does not exist.')
return redirect('look_up_member')
else:
form = Lookupmember()
return render(request, 'members/look_up_member.html', {'form': form})
当我第一次测试这个时,我为成员ID键入了“1”。这个成员确实存在,所以我被重定向到一个包含成员信息的页面
问题是出于某种原因,当我第二次测试它并键入“3”时,这是另一个存在的成员,我仍然只得到成员“1”的信息。所以基本上,这只是我第一次测试它。请用任何答案解释清楚。我有一种预感,“return render(request,'members/about_members.html',context)”一行存在问题,但我不确定如何着手解决这个问题
如果需要,这里是HTML模板。
{% extends "front_page/base.html" %}
{% load crispy_forms_tags %}
{% block content %}
<table class="table">
<thead>
<tr>
<th scope="col">Name</th>
<th scope="col">Email</th>
<th scope="col">Address</th>
<th scope="col">City</th>
<th scope="col">State</th>
<th scope="col">Zip Code</th>
<th scope="col">Phone Number</th>
</tr>
</thead>
<tbody>
<tr>
<td>{{ name }}</td>
<td>{{ email }}</td>
<td>{{ address }}</td>
<td>{{ city }}</td>
<td>{{ state }}</td>
<td>{{ zip_code }}</td>
<td>{{ phone_number }}</td>
</tr>
</tbody>
</table>
{% endblock content %}
{%extends“front_page/base.html”%}
{%load crispy_forms_tags%}
{%block content%}
名称
电子邮件
地址
城市
陈述
邮政编码
电话号码
{{name}}
{{email}}
{{地址}
{{城市}
{{state}}
{{zip_code}}
{{电话号码}
{%endblock内容%}
我认为问题出在以下三行:
if Addmember.objects.filter(id = member_id):
for x in Addmember.objects.all():
if Addmember.objects.filter(id = member_id):
这不起作用的原因是,当您启动for循环时,第一个x存在。然后,您只需检查列表是否可以过滤。
如果可以对其进行筛选,则并不意味着x与成员id相同。
您已经在for语句上方的行中执行了空检查。我的建议是改为:
if Addmember.objects.filter(id = member_id):
x = Addmember.objects.filter(id = member_id)[0]
context = {....
if Addmember.objects.filter(id = member_id):
for x in Addmember.objects.all():
if x.id == member_id:
context = {...
或者,对于最小的更改(尽管效率很低,因为您正在循环所有成员,而您不需要这样做),可以更改为以下内容:
if Addmember.objects.filter(id = member_id):
x = Addmember.objects.filter(id = member_id)[0]
context = {....
if Addmember.objects.filter(id = member_id):
for x in Addmember.objects.all():
if x.id == member_id:
context = {...
@YomenTohmaz才华横溢,很高兴我能帮上忙!因为这是解决问题的方法,你会考虑通过点击复选标记将它标记为你的问题的答案吗?这将使任何人都可以清楚地看到解决方案,谁可能在未来看这个线程。