Проблемы с маршрутизацией URL в Django

Я создаю веб-сайт, который будет использоваться в стоматологической практике, однако у меня возникли проблемы с маршрутизацией URL. Мне нужен шаблон 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"),

Views. 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 с redirect. render рендерит шаблон динамически с атрибутами из 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
Вернуться на верх