Django:render_to_response不起作用

时间:2015-06-28 13:57:14

标签: python django

我有一个模板perfil.html并希望将其发送给它:

return render_to_response('perfil.html', query_data,  context_instance=RequestContext(request), {'pseudonimo': usuario.pseudonimo,'seguidores': seguidores(usuario.pseudonimo), 'sigue':sigue(usuario.pseudonimo), 'posts':"En pruebas"})

但它不起作用。这是我的错误:

Request Method: GET
Request URL:    http://localhost:8000/mi_perfil/
Django Version: 1.8
Exception Type: SyntaxError
Exception Value: non-keyword arg after keyword arg (views.py, line 181)
Exception Location: /home/rebecca/DSI/pretec/pretec/urls.py in <module>, line 3
Python Executable:  /home/rebecca/DSI/env-pretec/bin/python
Python Version: 2.7.3

如果我这样做:

return render(request,'perfil.html', {'pseudonimo': usuario.pseudonimo,'seguidores': seguidores(usuario.pseudonimo), 'sigue':sigue(usuario.pseudonimo), 'posts':"En pruebas"})

它有效,如果我这样做:

return render_to_response('perfil.html', query_data, context_instance=RequestContext(request))

它也可以,但我想在render_to_response

中包含两个选项

这是我在views.py中的功能:

def mi_perfil(request):
   usuario = Usuario.objects.get(pseudonimo = request.session['member_id'])
   query = Usuario.objects.all()

   query_data = {
       "user_data" : query
   }
   print query_data
   return render_to_response('perfil.html', query_data, context_instance=RequestContext(request), {'pseudonimo': usuario.pseudonimo,'seguidores': seguidores(usuario.pseudonimo), 'sigue':sigue(usuario.pseudonimo), 'posts':"En pruebas"})

我做错了什么?我该如何解决?

2 个答案:

答案 0 :(得分:3)

Django非常清楚地告诉你你的错误

Exception Value: non-keyword arg after keyword arg (views.py, line 181)

关键字arg(context_instance=....)后面有一个非关键字参数(该字典)

至于如何修复,呃,你能不能......将这首字典粘贴到你的上下文中?您只能使用一个上下文字典(请参阅https://docs.djangoproject.com/en/1.8/topics/http/shortcuts/

def mi_perfil(request):
     usuario = Usuario.objects.get(pseudonimo = request.session['member_id'])
     query = Usuario.objects.all()

     context = {
          "user_data" : query
          'pseudonimo': usuario.pseudonimo,
          'seguidores': seguidores(usuario.pseudonimo),   
          'sigue':sigue(usuario.pseudonimo),
          'posts':"En pruebas",
                }
     print context
     return render_to_response('perfil.html', context,context_instance=RequestContext(request))

答案 1 :(得分:-1)

试试这个:

return render_to_response('perfil.html', query_data,  context_instance=RequestContext(request), dictionary={'pseudonimo': usuario.pseudonimo,'seguidores': seguidores(usuario.pseudonimo), 'sigue':sigue(usuario.pseudonimo), 'posts':"En pruebas"})