【问题标题】:How pass the request object in inclusion tag?如何在包含标签中传递请求对象?
【发布时间】:2014-05-02 16:46:24
【问题描述】:

我正在使用 django 1.5

我想将请求对象传递给我的包含标签,但是得到一个错误,Key Error。

我的看法是:

class IglesiaCreateView(CreateView):
     model = Iglesia
     template_name = 'iglesia/iglesia_form.html'
     success_url = reverse_lazy('iglesia_list')
     form_class = IglesiaForm

    def get_form_kwargs(self):
        kwargs = super(IglesiaCreateView, self).get_form_kwargs()
        kwargs['request'] = self.request
        return kwargs

我的表格是:

class IglesiaForm(forms.ModelForm):
    class Meta:
        model = Iglesia
        fields = ('nombre', 'principal', 'parroquia')

    def __init__(self, *args, **kwargs):
        self.request = kwargs.pop('request', None)
        super(IglesiaForm, self).__init__(*args, **kwargs)
        parroquia = self.request.session.get('parroquia')
        self.fields['parroquia'].queryset = Parroquia.objects.filter(pk=parroquia.pk)
        self.fields['parroquia'].empty_label = None

我的包含标签是:

from myapp.forms import IglesiaForm
@register.inclusion_tag('includes/iglesia_ajax_form.html', takes_context=True)
    def iglesia_ajax(context):
    request = context['request']
    form_iglesia = IglesiaForm()
    ctx = {'form_iglesia': form_iglesia}
    return ctx

我有一个错误:

Django Version: 1.5.1
Exception Type: KeyError
Exception Value: 'request'

编辑:

问题解决了

我在 TEMPLATE_CONTEXT_PROCESSORS 中添加以下内容:'django.core.context_processors.request'。

并改变:

form_iglesia = IglesiaForm()

到:

form_iglesia = IglesiaForm(request=request)

感谢您的帮助

【问题讨论】:

  • 我没有看到您的标签和您显示的 ModelForm 之间的关系。请说清楚。
  • 我在包含标签中使用:form_iglesia = IglesiaForm()

标签: python django django-context


【解决方案1】:

改变这一行

form_iglesia = IglesiaForm()

到:

form_iglesia = IglesiaForm(request=request)

看看这是否有效。

【讨论】:

  • 我刚刚在 TEMPLATE_CONTEXT_PROCESSORS 中添加了以下内容:'django.core.context_processors.request',它起作用了。有效果吗。。这行代码会影响我的应用的行为吗?
  • 这行代码将请求变量添加到每个模板的每个上下文中。我以为你已经这样做了。对不起。
猜你喜欢
  • 2018-08-02
  • 2021-09-10
  • 1970-01-01
  • 1970-01-01
  • 2019-05-21
  • 2017-05-17
  • 2021-03-11
  • 1970-01-01
  • 2017-11-16
相关资源
最近更新 更多