关键字参数

2024-10-01 22:39:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试不同类型的视图进行练习,我在django1.5中收到以下错误消息:

context = super(HelloTemplate, self).get_context_data(**kwargs)
NameError: global name 'kwargs' is not defined.

我的网址.py对于项目:

^{pr2}$

我的视图.py:-

    from django.http import HttpResponse
    from django.template.loader import get_template
    from django.template import Context
    from django.shortcuts import render_to_response 
    from django.views.generic.base import TemplateView

    def hello(request):
        name = 'Mudassar'
        html = "<html><body>Hi %s, this seems to worked!</body></html>" % name
        return HttpResponse(html)

    def hello_template(request):
        name = 'Mudassar'
        t = get_template('hello.html')
        html = t.render(Context({'name': name}))
        return HttpResponse(html)
    def hello_template_simple(request):
        name = 'Mudassar'
        return render_to_response('hello.html', {'name':name})

    class HelloTemplate(TemplateView):
        template_name = 'hello_class.html'

        def get_context_data(self, **kwarg):
            context = super(HelloTemplate, self).get_context_data(**kwargs)
            context['name'] = 'Mudassar'
            return context

Tags: djangonamefromimportselfhellodataget
3条回答

替换:

def get_context_data(self, **kwarg):
    context = super(HelloTemplate, self).get_context_data(**kwargs)
    context['name'] = 'Mudassar'
    return context

有:

^{pr2}$

:):p

因为get_context_data中的参数名为kwarg,而你用kwargs(复数)来引用它。在

我建议你用复数形式使用kwargs,因为is more standard:)

必须使用传递的同一个变量。在

class HelloTemplate(TemplateView):
    template_name = 'hello_class.html'

    def get_context_data(self, **kwargs):
        context = super(HelloTemplate, self).get_context_data(**kwargs)
        context['name'] = 'Mudassar'
        return context

如果您想使用kwargs,那么传递kwargs如果您想使用kwarg,那么在super中传递相同的内容。在

相关问题 更多 >

    热门问题