簡體   English   中英

Django網址錯誤“ / 2 / ipd /為NoReverseMatch”

[英]Django url error“NoReverseMatch at /2/ipd/”

我有創建Ipd的表格,並且Ipd模型是使用具有一對多關系的患者模型創建的,並且我已經有一個表,其中的患者列表位於url中。 我正在嘗試創建使用表單創建的所有Ipd的列表,我試圖在提交Ipd表單后將表單頁面重定向到Idp列表,但是以錯誤“ / 1 / ipd /處的NoReverseMatch”結束,

我要清除的一件事是,每個Ipd具有唯一的ID,並且Ipd是由具有一對多關系的患者創建的,也具有另一個唯一ID,錯誤中的數字是患者ID

views.py

@login_required
def ipd(request, patient_id):


    object = get_object_or_404(Patient,pk=patient_id)
    if request.method == "POST":
        formtwo = IpdForm(request.POST)
        if formtwo.is_valid() :
            instance = formtwo.save(commit=False) 
            instance.save()
            return HttpResponseRedirect(reverse('ipd_list', args=[patient_id]))
        else:
            return HttpResponse(formtwo.errors) 
    else:
        formtwo = IpdForm()

    return render(request, 'newipd.html', {'object':object, 'form2': formtwo})

@login_required
def ipd_list(request):

    ipdlist = Ipd.objects.all()
    return render(request, 'Ipdlist.html', {'ipd': ipdlist })

urls.py

re_path(r'^$', my_patient.index, name='home'),      <-- patient list-->
re_path(r'^(?P<patient_id>\d+)/ipd/$', my_patient.ipd, name='ipd'),
path(r'^ipdlist/', my_patient.ipd_list,name='ipdlist' ),

模板


<ul>
<li><a href="{% url 'ipdlist' %}" ><span class="title">Indoor Patient Department</span></a></li>
</ul>

########
in ipdform

<form class="col s12" role="form" action="{% url 'ipd_list' 'patient_id' %}" method="post"  enctype="multipart/form-data"> {% csrf_token %}



由於要返回到ipd_list,因此必須刪除args=[patiend_id]

return HttpResponseRedirect(reverse('ipd_list'))

您正在嘗試使用參數將用戶重定向到ipdlist網址。 由於這是一個列表方法,因此您不應該這樣做。 您需要更改:

@login_required
def ipd(request, patient_id):


    object = get_object_or_404(Patient,pk=patient_id)
    if request.method == "POST":
        formtwo = IpdForm(request.POST)
        if formtwo.is_valid() :
            instance = formtwo.save(commit=False) 
            instance.save()
            return HttpResponseRedirect(reverse('ipd_list'))
        else:
            return HttpResponse(formtwo.errors) 
    else:
        formtwo = IpdForm()

    return render(request, 'newipd.html', {'object':object, 'form2': formtwo})

@login_required
def ipd_list(request):

    ipdlist = Ipd.objects.all()
    return render(request, 'Ipdlist.html', {'ipd': ipdlist })

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM