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 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
我正在建立一个网站,用于牙科诊所,但是我在 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 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