Django URL 路由问题

Problems with Django URL routing

我正在建立一个网站,用于牙科诊所,但是我在 URL 路由方面遇到了问题。我想要 af URL 模式,例如:Denthelp/kartotek/#nameofclinic#/opretpatient。 我的建议是这样的:

urls.py:

path('kartotek/<str:kl_id>/', views.kartotek, name="kartotek"),
path('kartotek/<str:kl_id>/opretpatient/', views.opretpatient, name="opret_patient"),

观看次数。 py:

def kartotek(request, kl_id):
kliniknavn = Klinik.objects.get(navn=kl_id)
E_patient = kliniknavn.patient_set.all()
context = { 'kliniknavn':kliniknavn, 'E_patient':E_patient}
return render(request,'DentHelp/kartotek.html', context )

def opretpatient(request, kl_id):
kliniknavn = Klinik.objects.get(navn=kl_id)

form = PatientForm()
if request.method == 'POST':
    form = PatientForm(request.POST)
    if form.is_valid():
        form.save()
        return redirect('kartotek/<str:kl_id>/')

context = {'form':form, 'kliniknavn':kliniknavn}
return render(request,'DentHelp/kartotek/<str:kl_id>/opretpatient.html', context)

当 运行 代码时,我得到此处显示的最后一行代码的 OSError。

你们对此有什么建议吗?

你搞混了render with redirectrender 使用 context 中的属性 动态 呈现模板,其中 redirect 将用户重定向到不同的视图。要调用 render,您需要提供模板名称和上下文。对于重定向,您需要提供 url 名称和参数(如果需要)。以下是您应该在代码中执行的操作:

def opretpatient(request, kl_id):
    kliniknavn = Klinik.objects.get(navn=kl_id)
    
    form = PatientForm()
    if request.method == 'POST':
        form = PatientForm(request.POST)
        if form.is_valid():
            form.save()
            return redirect('kartotek', kl_id)  # url name and parameter

context = {'form':form, 'kliniknavn':kliniknavn}
return render(request, 'DentHelp/kartotek/opretpatient.html', context)  # template name and context