2011-06-13 13 views
6

Tengo un problema, he subido mi proyecto Django a un servidor web que ejecuta apache, mod_python y django. En el equipo que he desarrollado en los siguientes trabajos finosDjango en el servidor web Apache 'objeto dict' no tiene ningún atributo 'render_context'

nameBox = getNamesBox().render(locals()) 

-

def getNamesBox(): 
    users = User.objects.filter() 

    templateString = '<select name="name box">' 
    for user in users: 
     templateString += '<option value="' + user.name + '"> ' + user.name + '</option>' 

    templateString += '</select>' 

    template = Template(templateString) 

    return template 

Pero en el servidor web, cuando se ejecuta desde ejecución del servidor Apache o manage.py, se dice

AttributeError at /order_site/order/ 
'dict' object has no attribute 'render_context' 

El código en ambas máquinas es idéntico, así que siento que tal vez sea otro problema. No puede representar mi forma y no sé por qué.

+0

Pareces haber perdido todo el punto de las plantillas, allí. ¿Por qué crear el texto manualmente usando concatenación y luego "renderizando" algo que no contenga sintaxis de plantilla, en lugar de usar un archivo de plantilla con una lógica de plantilla adecuada que pueda hacer todo eso por usted? –

+0

O, mejor aún, use las clases de formulario. –

+0

@Rafe bien, sí, de hecho. –

Respuesta

11

El método render() en un Template toma un objeto Context como argumento, no como un dict. Deberá construir un objeto Context del dict, por ej.

namedbox = getNamesBox().render(Context(locals())) 
+1

Se puede importar con 'from django.template import Context' – azmeuk

+2

en versiones más nuevas' render() 'toma un dict como contexto que no tiene este método – patroqueeet

Cuestiones relacionadas