Django函数重定向回类



我正在尝试获取它,所以每当我的函数delete_curricula_info被激活时,它就会重定向到CurriculumClassesurl

class CurriculumClasses(TemplateView):
template_name = 'architect/assignclasses.html'
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['form'] = AssignClassForm(self.request.GET or None)
context['classes'] = Classes.objects.all()
context['curricula_infos'] = CurriculaInfo.objects.all()
context['course_abbr'] = self.kwargs.get('course_abbr')
context['year'] = self.kwargs.get('year')
context['semester'] = self.kwargs.get('semester')
context['module_abbr'] = self.kwargs.get('module_abbr')
context['curricula'] = Curricula.objects.get(
course_period__course__course_abbreviation=self.kwargs.get('course_abbr'),
module_period__module__module_abbreviation=self.kwargs.get('module_abbr'),
course_period__period__academic_year=self.kwargs.get('year'),
course_period__period__semester=self.kwargs.get('semester')).pk
return context
def delete_curricula_info(request, pk):
curricula_info = get_object_or_404(CurriculaInfo, pk=pk)
curricula_info.delete()
return redirect('curriculum_classes')

这是我的网址.py

path('courses/<str:course_abbr>/<str:module_abbr>/<int:year>/<int:semester>/classes/',
views.CurriculumClasses.as_view(), name='curriculum_classes'),
path('delete-curricula-info/<int:pk>/', views.delete_curricula_info, name='delete_curricula_info')

我的CurriculumClasses的url使用的是动态的,所以我无法将url硬编码为函数的返回重定向。那么,当我当前的方法不起作用时,我该如何重定向呢。谢谢

您可以这样重定向它:

from django.urls import reverse
def delete_curricula_info(request, pk):
curricula_info = get_object_or_404(CurriculaInfo, pk=pk)
curricula_info.delete()
course_abbr = 'xxx'
module_abbr = 'xxx'
year = 2018
semester = 1
args = (course_abbr, module_abbr, year, semester)
return redirect(reverse('curriculum_classes', args=args))

最新更新