Foros del Web » Programando para Internet » Python »

recoger valor de una template

Estas en el tema de recoger valor de una template en el foro de Python en Foros del Web. Hola compañeros, tengo una duda y no consigo saber como arreglarlo. He intentado buscar en la documentacion de django pero no veo como. El caso ...
  #1 (permalink)  
Antiguo 17/09/2012, 09:22
Avatar de wolvelopez  
Fecha de Ingreso: junio-2008
Mensajes: 86
Antigüedad: 15 años, 10 meses
Puntos: 0
recoger valor de una template

Hola compañeros, tengo una duda y no consigo saber como arreglarlo. He intentado buscar en la documentacion de django pero no veo como.
El caso es que tengo un template que muestra unos valores. Y necesito que cuando el usuario haga click en uno de esos valores, pueda yo recoger el valor dentro views.py.
¿Sabeis como podria hacer esto?
Saludos y gracias de antemano.
__________________
# "El software es un gas: se expande hasta llenar su contenedor"
-- Nathan Myhrvold
  #2 (permalink)  
Antiguo 17/09/2012, 10:00
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: recoger valor de una template

Te recomiendo leer el Django Book en caso que sepas Ingles, si solo sabes español entonces te recomiendo la guía de Django de maestros del web.

Ahora la respuesta a tu pregunta es sencilla si has leído los primeros capítulos de cualquiera de los 2 recursos que te deje.

Básicamente lo que tienes es hacer (dependiendo de la cantidad de datos) es hacer una petición una petición GET por medio de una url generada con los datos que necesitas pasar. O si los datos son muchos entonces una petición POST por medio de un formulario.
  #3 (permalink)  
Antiguo 17/09/2012, 11:58
Avatar de wolvelopez  
Fecha de Ingreso: junio-2008
Mensajes: 86
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: recoger valor de una template

Gracias, sigo probando her si doy con la solución.
__________________
# "El software es un gas: se expande hasta llenar su contenedor"
-- Nathan Myhrvold
  #4 (permalink)  
Antiguo 18/09/2012, 00:59
 
Fecha de Ingreso: agosto-2012
Mensajes: 23
Antigüedad: 11 años, 8 meses
Puntos: 0
Respuesta: recoger valor de una template

Hola, te voy a intentar ayudar, como dice Razpeita lo mejor es leer e intentarlo tu mismo, porque como se dice, para aprender a escribir hay que leer primero. Bueno te voy a intentar ayudar con pseudo-codigo:

Supongamos que tienes una pagina principal(tu template) donde tu escribes los datos(recuadros), en la metodologia REST la petición de esa pagina es un GET, y cuando tu rellenas los datos y le das al boton de enviar los datos o a enter eso es un POST, asi que tendras que hacer algo asi, en views.py
Código:
def PaginaPrincipal(request):
    if request.method == 'POST':
        #ojo dato1 y dato2 estan definidas en el template donde vas a rellenas los recuadros
        VariableDato1 = request.POST['dato1']
        VariableDato2 = request.POST['dato2']
        .....
       render_to_response('PaginaquequierasmostrarConlosdatosPost.html',
                                                   context_instance=RequestContext(request))
    if request.method == 'GET':
        ....
        return render_to_response('PaginaInicial.html',
                                                        context_instance=RequestContext(request))
    else:
    ....
Ojo esto es pseudo-codigo no copies y pegues porque no funcionara, ademas yo he usado render_to_response pero podrias usar otro metodo para mostrar el template, y ademas te faltaria importar los paquetes en views.py, lo mejor mirate algun ejemplo y si en 1 dia no lo encuentras vuelve a escribir aqui y te dejo yo uno completo. Un saludo y suerte
  #5 (permalink)  
Antiguo 18/09/2012, 04:10
Avatar de wolvelopez  
Fecha de Ingreso: junio-2008
Mensajes: 86
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: recoger valor de una template

Muchas gracias supersergio, pero en mi caso no estoy teniendo porblemas con los tenplates que llevan formularios, sino con un template en el que muestro valores de la API de google maps.
No me queda claro como funciona esto de :
<a href='url pricipal.views.funcion referencia'>{{ referrencia }}</a>
No se como puedo recoger ese valor desde la vista.

Un saludo y gracias.
__________________
# "El software es un gas: se expande hasta llenar su contenedor"
-- Nathan Myhrvold
  #6 (permalink)  
Antiguo 18/09/2012, 11:29
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: recoger valor de una template

Eso es el tag url.

Y se usaría de la siguiente manera.
Código Python:
Ver original
  1. <a href="{% url 'pricipal.views.funcion' referencia %}">{{ referrencia }}</a>
  #7 (permalink)  
Antiguo 19/09/2012, 05:30
Avatar de wolvelopez  
Fecha de Ingreso: junio-2008
Mensajes: 86
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: recoger valor de una template

Vale, he probado como me has dicho pero ahora me marca este error:

syntax error

Request Method: POST
Request URL: http://127.0.0.1:8000/obtpos/
Django Version: 1.4
Exception Type: error
Exception Value:

syntax error

Exception Location: /usr/lib/python2.7/re.py in _compile, line 244
Python Executable: /usr/bin/python
Python Version: 2.7.2
Python Path:

['/usr/local/lib/python2.7/dist-packages/requests-0.13.6-py2.7.egg/requests/packages',
'/home/wolvelopez/Programacion/mitapa',
'/usr/local/lib/python2.7/dist-packages/requests-0.13.6-py2.7.egg',
'/usr/local/lib/python2.7/dist-packages/googlemaps-1.0.2-py2.7.egg',
'/usr/lib/python2.7',
'/usr/lib/python2.7/plat-linux2',
'/usr/lib/python2.7/lib-tk',
'/usr/lib/python2.7/lib-old',
'/usr/lib/python2.7/lib-dynload',
'/usr/local/lib/python2.7/dist-packages',
'/usr/lib/python2.7/dist-packages',
'/usr/lib/python2.7/dist-packages/PIL',
'/usr/lib/python2.7/dist-packages/gst-0.10',
'/usr/lib/python2.7/dist-packages/gtk-2.0',
'/usr/lib/pymodules/python2.7',
'~/modules']

Server time: mié, 19 Sep 2012 13:24:14 +0200
Error during template rendering

In template /home/wolvelopez/Programacion/mitapa/public/plantillas/lugarescercanos.html, error at line 12
syntax error
2
3 {% block estilo %}
4 {% endblock %}
5
6 {% block contenido %}
7 <h1>Lugares Cercanos</h1>
8 <div id="lugarescarcanos">
9 {% for item in datos %}
10 <div id="lugarescercanos2">
11 <p>{{ item.local }}</p>
12 <p><a href="{% url 'principal.views.selecciondeLocal' item.ref %}">Añadir Tapa</a></p>
13 </div>
14 {% empty %}
15 <p>No hay lugares cercanos.</p>
16 {% endfor %}
17 Referencia: {{ referencia }}
18 </div>
19 {% endblock %}
20
__________________
# "El software es un gas: se expande hasta llenar su contenedor"
-- Nathan Myhrvold
  #8 (permalink)  
Antiguo 19/09/2012, 07:53
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: recoger valor de una template

En ese caso te recomiendo ponerle un alias y luego utilizarlo.

Código Python:
Ver original
  1. {% url 'pricipal.views.funcion' referencia as the_url %}
  2. <a href="{{ the_url }}">{{ referrencia }}</a>
  #9 (permalink)  
Antiguo 19/09/2012, 10:06
Avatar de wolvelopez  
Fecha de Ingreso: junio-2008
Mensajes: 86
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: recoger valor de una template

Vale muchas gracias razpeitia.
Lo he conseguido solucionar porque me di cuenta que los valores que trae item.ref son de este tipo:
CnRqAAAA-kQnqdhHd8W1IhyatMGjmQcT2bJIEN6XHAkFDdNzO551SxWP2dV E3iOk57fcnot74tX9bCvIME8rMMTdjXpdOplWOPwXcatwdwGYU cgawCSnx33A3P_F7hU92_NpITLi1U30-I99jY6iCZw8OcQuxxIQzjdSfHIiIbjcsdUrh4_FxBoUc4NnX2_ dIpJ4UiPOd8RZkwlmPxg

Pero el problema que tengo es que no se como indicarle a urls.py que me capture esa expresion:

url(r'^selecciondeLocal/(?P<referencia>\d+)/$', 'principal.views.selecciondeLocal'),

Si cambio, item.ref por un numero como por ejemplo 989 funciona bien, pero no se como hacer que me capture una cadena como la anterior...He leido sobre expresiones regulares pero no doy en el clavo.

Saludos y gracias.
__________________
# "El software es un gas: se expande hasta llenar su contenedor"
-- Nathan Myhrvold
  #10 (permalink)  
Antiguo 19/09/2012, 10:30
Avatar de wolvelopez  
Fecha de Ingreso: junio-2008
Mensajes: 86
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: recoger valor de una template

Vale, ya está razpeitia.
La solucion al final:

url(r'^selecciondeLocal/(?P<referencia>\S+)/$', 'principal.views.selecciondeLocal'),

Gracias.
__________________
# "El software es un gas: se expande hasta llenar su contenedor"
-- Nathan Myhrvold

Etiquetas: django, template
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:10.