Django函数重定向回类

时间:2018-07-25 09:06:34

标签: python django

我正在尝试获取它,因此只要我的功能delete_curricula_info被激活,它就会重定向到CurriculumClasses网址

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')

在这里我的urls.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的网址使用的是动态网址,因此我无法将其硬编码为函数的返回重定向。因此,由于当前方法不起作用,我该如何重定向。谢谢。

1 个答案:

答案 0 :(得分:0)

您可以这样重定向它:

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))