Python 应用程序无法打印第一次输入的信息

Python 应用程序无法打印第一次输入的信息,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

视图.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 = 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才华横溢,很高兴我能帮上忙!因为这是解决问题的方法,你会考虑通过点击复选标记将它标记为你的问题的答案吗?这将使任何人都可以清楚地看到解决方案,谁可能在未来看这个线程。