【问题标题】:Why aren't kwargs available to Django DetailView为什么 Django DetailView 不能使用 kwargs
【发布时间】:2013-09-26 02:16:49
【问题描述】:

为什么我无法在 DetailView 中访问从 url 字符串传递的 kwargs['party_id']?

Test url: http://127.0.0.1:8000/party/3/activity/2/

urls.py

url(r'^party/(?P<party_id>\d*)/activity/(?P<pk>\d*)/$', ActivityView.as_view(), name='activity')

views.py

class ActivityView(DetailView):
    template_name = "ooe/activity_results.html"
    context_object_name = "activity"
    model = Activity

    def get_context_data(self, **kwargs):
        context = super(ActivityView, self).get_context_data(**kwargs)
        #this line is not working because kwargs is just: {'object': <Activity: Activity 2>}
        context['submissions'] = self.get_object().get_submissions(kwargs['party_id'])       
        return context

    @method_decorator(user_passes_test(active_participant))
    def dispatch(self, *args, **kwargs):
        return super(ActivityView, self).dispatch(*args, **kwargs)

【问题讨论】:

    标签: python django django-class-based-views


    【解决方案1】:

    改用self.kwargs。传递给get_context_datakwargs 只是该方法的参数。

    【讨论】:

      猜你喜欢
      • 2014-07-22
      • 1970-01-01
      • 2012-06-13
      • 1970-01-01
      • 2017-03-26
      • 1970-01-01
      • 1970-01-01
      • 2019-07-10
      • 2014-07-27
      相关资源
      最近更新 更多