Re: [Django-es] ¿Cómo paso más de un parámetro (id) a otra página con Django?

4,661 views
Skip to first unread message

Diego Uribe Gamez

unread,
Feb 11, 2013, 6:15:08 PM2/11/13
to djan...@googlegroups.com
imprimes las variables en un metodo form html y en la vista que procesa si es la misma le dices que si hay un POST reciba las variables.

Template:

                <!--<form id='pdf' action="/app/vista_que_procesa/" method="POST">
                {% csrf_token %}
                    <input type="hidden" name="curso" value="{{id_curso}}"/>
                    <input type="hidden" name="persona" value="{{id_persona}}"/>
                    <button id='pdf' type="submit" value="Exportar" alt='consulta'></button>

en la vista:

    # si hay busqueda POST
    if request.POST:
        curso_web = request.POST.get('id_curso')
        persona_web = request.POST.get('id_persona')


El 11 de febrero de 2013 09:36, Lucho Flores <luchito...@gmail.com> escribió:
Necesito por ejemplo pasar el id de una persona y el id de un curso que está tomando de una página a otra, cómo hago para pasar esos dos parámetros a otra vista, y cómo los manejo en la siguiente vista para evitar confusiones. En java por ejemplo se utiliza idalumno=23&&idcurso=34, y en la otra vista tengo mis atributos idalumno e idcurso, pero en Django no sé como hacerlo. Me pueden ayudar con un ejemplo o explicación???

--
--
Ha recibido este mensaje porque está suscrito a Grupo "Grupo de Usuarios del Framework Django de habla hispana" de Grupos de Google.
Si quieres publicar en este grupo, envía un mensaje de correo
electrónico a djan...@googlegroups.com
Para anular la suscripción a este grupo, envíe un mensaje a django-es-...@googlegroups.com
Para obtener más opciones, visita este grupo en http://groups.google.com.bo/group/django-es.
---
Has recibido este mensaje porque estás suscrito al grupo "Django-es" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus correos electrónicos, envía un correo electrónico a django-es+...@googlegroups.com.
Para obtener más opciones, visita https://groups.google.com/groups/opt_out.
 
 



--
 Diego Alonso Uribe Gamez

Desarrollador web

Twitter: @DiegoUG

Google+: http://gplus.to/diegoug



Diego Uribe Gamez

unread,
Feb 11, 2013, 6:32:09 PM2/11/13
to djan...@googlegroups.com
podrías colocar mas campos input, pero si es en vivo te tocaría usar javascript para añadirlos, se me ocurrió eso.

Charly Román

unread,
Feb 11, 2013, 6:39:07 PM2/11/13
to djan...@googlegroups.com
Puedes hacer lo mismo que usas en Java, un redirect con el querystring añadido.

Saludos!

Herald Matias Olivares Zarsoza

unread,
Feb 11, 2013, 6:48:58 PM2/11/13
to djan...@googlegroups.com
Estimado Lucho, 
pues si es tal como dices "de una página a otra" entiendo que te refieres a una Redirección (HttpResponseRedirect), pues se me ocurren 2 alternativas:
1.- Usar parametros en la URL 
2.- querystring en la URL (tal como citaste el ejemplo en JAVA)

Supongamos que idalumno=23 y idcurso=34 son dos datos que sirven para matricular a un alumno a un curso libre.

en el primer caso:
 
la url a la que redireccionaria al matricular al alumno 23 en el curso 34, se veria de esta forma /matricular/23/34/ 
en urls.py tenemos algo asi:

from django.conf.urls.defaults import patterns, url, include

urlpatterns = patterns('tuapp.views',
    url(r'^matricular/(?P<idalumno>\d+)/(?P<idcurso>\d+)/$',
        'make_matricula',
        name='modulo-matriculas-add'),
)

en views.py  la funcion "make_matricula" deberia tener esta definicion:

def make_matricula(request, idalumno, idcurso):
    #codigo que hace la matricula

asumiendo que estas usando el server de desarrollo de django, en la barra de direcciones del browser tendrias algo asi:

en el segundo caso:

la url a la que redireccionaria al matricular al alumno 23 en el curso 34, se veria de esta forma /matricular/?idalumno=23&idcurso=34
en urls.py tenemos algo asi:

from django.conf.urls.defaults import patterns, url, include

urlpatterns = patterns('tuapp.views',
    url(r'^matricular/$',
        'make_matricula',
        name='modulo-matriculas-add'),
)

en views.py  la funcion "make_matricula" deberia tener esta definicion:

def make_matricula(request):
    #obtener idalumno
    idalumno = request.GET.get('idalumno')
    idcurso = request.GET.get('idcurso')
    #codigo que hace la matricula

asumiendo que estas usando el server de desarrollo de django, en la barra de direcciones del browser tendrias algo asi:
http://127.0.0.1:8000/matricular/?idalumno=23&idcurso=34

Saludos.

PD: Ten en cuenta que este tipo de trabajo en las urls no es exclusivo de django y mucho menos de python.



El 11 de febrero de 2013 18:15, Diego Uribe Gamez <diego.ur...@gmail.com> escribió:

Lucho Flores

unread,
Feb 16, 2013, 12:05:06 PM2/16/13
to djan...@googlegroups.com
Hola Herald gracias por tu ayuda, efectivamente pude hacer lo que tú me indicas en el paso 1, el paso 2 aún lo estoy probando. Gracias por compartir tu conocimiento y por tu explicación bien amena y didáctica.

Lucho Flores

unread,
Feb 16, 2013, 12:10:05 PM2/16/13
to djan...@googlegroups.com
Gracias Diego por tu ayuda, en verdad que me sirvió tu respuesta, sobre todo en la parte de los templates, era justo lo que quería. Gracias por compartir

Reply all
Reply to author
Forward
0 new messages