Ayuda Request.POST

64 views
Skip to first unread message

gonza...@gmail.com

unread,
Nov 18, 2008, 4:10:34 PM11/18/08
to Django-es
Hola amigos yo otra vez con mis dudas , espero no se cansen
tengo un formulario html (no estoy usando los forms de django)

<input type="text" name="fecha" id="fecha" />
este campo utiliza un script para llenarse (calendario dinamico)
y me llena la fecha de esta manera por ej . 2008/18/11 ok?

ahora tengo una funcion que recibe este valor:

def algo(request):
f=request.POST['fecha']
return HttpResponse(f)
Y funciona perfectamente, lo quer quiero es convertir este dato a DATE
para poder extraer el año , mes y dia.
Me podrian explicar como convertir esto a tipo DATE?? y como extraer
el año, mes y dia...
muchas gracias
Se los agradezco

gonza...@gmail.com

unread,
Nov 18, 2008, 4:13:07 PM11/18/08
to Django-es
En realidad el calendario llena en este formato me equivoque

(Y/m/d) ----> 2008/11/18 osea 18 de Noviembre del 2008

Antoni Aloy

unread,
Nov 18, 2008, 6:12:50 PM11/18/08
to djan...@googlegroups.com
2008/11/18 gonza...@gmail.com <gonza...@gmail.com>:

>
> Hola amigos yo otra vez con mis dudas , espero no se cansen
> tengo un formulario html (no estoy usando los forms de django)
>
> <input type="text" name="fecha" id="fecha" />
> este campo utiliza un script para llenarse (calendario dinamico)
> y me llena la fecha de esta manera por ej . 2008/18/11 ok?
>
> ahora tengo una funcion que recibe este valor:
>
> def algo(request):
> f=request.POST['fecha']
> return HttpResponse(f)

Solución fácil: Busca en la documentación de python datetime. Tiene
strptime, que confierte a un datetime a partir de una cadena :
http://www.python.org/doc/2.5.2/lib/module-time.html

Solución buena: no deberías obtener directamente el valor. Crea un
formulario y dile que el campo es de tipo Date o DateTime. En este
caso Django hará la validación y te devolverá directamente un Date o
DateTime según corresponda.

Saludos,

--
Antoni Aloy López
Blog: http://trespams.com
Site: http://apsl.net

Facundo Casco

unread,
Nov 18, 2008, 6:15:46 PM11/18/08
to djan...@googlegroups.com
2008/11/18 gonza...@gmail.com <gonza...@gmail.com>:

>
> En realidad el calendario llena en este formato me equivoque
>
> (Y/m/d) ----> 2008/11/18 osea 18 de Noviembre del 2008


basicamente usa el modulo datetime de Python:
import datetime
a, m, d = f.split('/')
fecha = datetime.date(int(a), int(m), int(d))

Sergio Hinojosa

unread,
Nov 18, 2008, 6:35:58 PM11/18/08
to djan...@googlegroups.com
Puedes utilizar los widgets usados en el admin:

from django.contrib.admin import widgets

fecha = forms.DateField(label=u"Fecha", input_formats=['%Y-%m-%d'], widget=widgets.AdminDateWidget)

y tambien necesitaras añadir los javascripts en el media de tu formulario para que funcione y se vea tal cual el calendario usado en la interfaz de administracion de django:

/admin-media/js/core.js
/admin-media/js/calendar.js
/admin-media/js/admin/DateTimeShortcuts.js

gonza...@gmail.com

unread,
Nov 19, 2008, 7:42:47 AM11/19/08
to Django-es
No estoy usando los forms de django , sino html puro
y quiero ver como haria en ese caso
muchas gracias

gonza...@gmail.com

unread,
Nov 19, 2008, 4:23:01 PM11/19/08
to Django-es
Denme una manito por favor estoy desesperado

Ramiro Morales

unread,
Nov 19, 2008, 4:30:11 PM11/19/08
to djan...@googlegroups.com
2008/11/19 gonza...@gmail.com <gonza...@gmail.com>:

>
> Denme una manito por favor estoy desesperado

Revisa el hilo porque ya te han repsondido con pistas muy concretas y
totalmente válidas al menos dos personas.

Muchas veces no vas a obtener que la gente te solucione el problema haciendo
directamente todo el trabajo por tí. Siempre será mejor que te enseñen a pescar
(que es lo que han hecho) y no que te den servido el producto de la pesca.

En este caso saber pescar sería leer sobre y adquirir experiencia con
Python y su
librería estándar, porque el problema no tiene nada de específico a Django y lo
que aprendas seguramente te va a servir de ahora en adelanteen otros contextos
en los que uses el lengaje.

Suerte,

--
Ramiro Morales

gonza...@gmail.com

unread,
Nov 19, 2008, 5:06:12 PM11/19/08
to Django-es
Es q la verdad he revisado y no hallo
es que el argumento datetime recibe datetime.date(int(YEAR),int
(MONTH),int(DAY))

Pero en mi request.POST['fecha'] solo guardo un valor unicode o
cadena.... que en el ejemplo es 2008/11/18

Y no tengo idea de como descomponer esto.. de todas formas Muchas
gracias por su ayuda

Anthony Cruz

unread,
Nov 20, 2008, 10:39:05 AM11/20/08
to djan...@googlegroups.com
2008/11/19 gonza...@gmail.com <gonza...@gmail.com>:

Yo si, yo si, :)

fijate que leyendo el hilo te dicen como descomponer una cadena con un
caracter separador, si te tomas tu tiempo, respiras, tomas un vaso de
agua, y lees nuevamente el hilo lo encontraras, intentalo...

... no lo encuentras, ah que mal, pues bien me tomo el atrevimiento de
citar el mail del amigo Facundo:

basicamente usa el modulo datetime de Python:
import datetime
a, m, d = f.split('/')
fecha = datetime.date(int(a), int(m), int(d))

y eso es todo.

Sin el animo de ofender a nadie, me uno a la causa de Ramiro Morales,
de una forma algo mas sarcastisca, pero, por Dios, aprendamos a leer,
me ha gustado mucho esta lista y no quisiera que le pasase lo mismo
que a otras que por tedio he abandonado, no se ustedes pero a mi me
parece que existen diferencias claras entre ayudar y fomentar la
pereza de los lectores de la lista, espero que se tome este comentario
de forma constructiva.

gonza...@gmail.com

unread,
Nov 20, 2008, 1:50:16 PM11/20/08
to Django-es
Ok ,tienen razon en eso...........la verdad no lei m uy bin
Reply all
Reply to author
Forward
0 new messages