簡體   English   中英

Django 'redirect_field_name' 為什么它返回到 index.html 頁面?

[英]Django 'redirect_field_name' why it returns to index.html page?

填寫表格后,當我點擊保存重定向到“clinichospital_list.html”,但它需要到 index.html。 它是 view.py 類

class ClinicHospitalCreateView(CreateView):
redirect_field_name = 'clinichospital_detail.html'
form_class = ClinicHospitalForm
model = ClinicHospital

它是 urls.py

path(r'',views.AboutView.as_view(),name = 'about'),
**path(r'^list/$',views.ClinicHospitalListView.as_view(),name ='clinichospital_list' ),**
path(r'^clinichospital/(?P<pk>\d)/$',views.ClinicHospitalDetailView.as_view(),name = 'clinichospital_detail'),
path(r'^clinichospital/new/$',views.ClinicHospitalCreateView.as_view(),name = 'clinichospital_new'),
path(r'^clinichospital/(?P<pk>\d)/edit/$',views.ClinicHospitalUpdateView.as_view(), name = 'clinichospital_eidt'),
path(r'^clinichospital/(?P<pk>\d)/remove/$',views.ClinicHospitalDeleteView.as_view(),name = 'clinichospital_remove'),

它是 forms.py

<form class="clinic-form"  method="post">
{% csrf_token %}
{{form.as_p}}
<button type="submit" class="save btn btn-default" name="button">Save</button>

據我所知, CreateView沒有redirect_field_name ,因此它不會在CreateView背后的邏輯中考慮到這一點。

此外,您在這里將模板路徑混淆了。 在 Django 中,路徑通常沒有.html (或其他)擴展名。 多個路徑可以呈現相同的模板,因此無論如何它都沒有多大意義。

可以覆蓋get_success_url(..)方法[Django-doc]並返回對應的路徑:

from django.urls import reverse

class ClinicHospitalCreateView(CreateView):
    form_class = ClinicHospitalForm
    model = ClinicHospital

    def get_success_url(self):
        return reverse('clinichospital_detail', kwargs={'pk': self.object.pk})

請注意,您的路徑使用re_path(..)語法 [Django-doc]而不是path(..)語法 [Django-doc] 您可以將這些重寫為:

path('',views.AboutView.as_view(), name='about'),
path('list',views.ClinicHospitalListView.as_view(), name='clinichospital_list' ),
path('clinichospital/<int:pk>',views.ClinicHospitalDetailView.as_view(), name='clinichospital_detail'),
path('clinichospital/new/',views.ClinicHospitalCreateView.as_view(), name='clinichospital_new'),
path('clinichospital/<int:pk>/edit/',views.ClinicHospitalUpdateView.as_view(), name='clinichospital_edit'),
path('clinichospital/<int:pk>/remove/',views.ClinicHospitalDeleteView.as_view(), name='clinichospital_remove'),

暫無
暫無

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

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