2015-06-28 2 views
2

У меня есть шаблон perfil.html и хотите отправить этому:Джанго: render_to_response не работает

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"}) 

Что я делаю неправильно? Как я могу это исправить?

ответ

3

Джанго говорит вам вашу ошибку достаточно четко

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

У вас есть без ключевого слова аргумент (что словарь) после ключевого слова арг (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)) 
+0

Спасибо вам за помощь!! Теперь он работает – Yckeb

+0

Добро пожаловать! :П – NightShadeQueen

-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"}) 
+0

Параметр 'dictionary' аргумент является устаревшим и не должны использоваться. Это * тот же * аргумент, что и 'context', новое имя. Вы не можете использовать оба. –

+0

При использовании обоих параметров 'context' заменяется * на * с аргументом' dictionary, см. Https://github.com/django/django/blob/master/django/template/engine.py#L220-L226 –

Смежные вопросы