2014-03-14 108 views
1

我尝试不同类型的视图实践,我在Django 1.5得到以下错误信息: -关键字参数

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

我urls.py项目:

urlpatterns = patterns('', 
    url(r'^hello/$', 'article.views.hello'), 
    url(r'^hello_template/$', 'article.views.hello_template'), 
    url(r'^hello_template_simple/$', 'article.views.hello_template_simple'), 
    url(r'^hello_class_view/$', HelloTemplate.as_view()), 
    ) 

我的看法。潘岳: -

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 

回答

4

由于get_context_data的参数被命名为kwarg和你指的是过b (复数)。

我建议你在多使用kwargs因为is more standard :)

2

替换:

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

有了:

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

:):P

+0

这样做的伎俩...谢谢很多家伙..感谢您的帮助。 – user3114321

0

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

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然后通过超级相同。