Django get_context_data错误

时间:2017-11-22 03:58:53

标签: django python-3.x

我正在尝试创建一个自定义的get_context_data,但我收到错误 get_context_data()需要1个位置参数但是2个被赋予,我不知道为什么

有人可以帮助我吗?为什么我会收到这个错误?以及我如何解决它?

提前致谢

class JobDetail(DetailView):
    model = Job
    template_name = 'employer/job_detail.html'


    def get_context_data(self, **kwargs):
        context = super(JobDetail, self).get_context_data(kwargs)

        job = Job.objects.all()

        sign_job = False
        if self.request.user.is_authenticated():
            get_job = SignJob.objects.filter(user=self.request.user, job=job) # TODO:look at how to get the job the right way
            if self.request.method == 'POST':
                SignJob.objects.create(user=self.request.user, job=job)
            sign_job = get_job.exists()

        context['sign_job'] = sign_job
        return context

1 个答案:

答案 0 :(得分:1)

您忘记了解kwargs个参数:

context = super(JobDetail, self).get_context_data(kwargs)

应该是:

context = super(JobDetail, self).get_context_data(**kwargs)

另外,只是一个小建议,您可以像这样重写get_context_data方法:

def get_context_data(self, **kwargs):
    job = Job.objects.all()

    sign_job = False
    if self.request.user.is_authenticated():
        get_job = SignJob.objects.filter(user=self.request.user, job=job) # TODO:look at how to get the job the right way
        if self.request.method == 'POST':
            SignJob.objects.create(user=self.request.user, job=job)
        sign_job = get_job.exists()

    return super(JobDetail, self).get_context_data(
        sign_job=sign_job,
        **kwargs
    )