tutorial tarantino pelicula descargar cantante django

tarantino - django tutorial



que es reverse() en Django (5)

Demasiada pregunta, pero esto podría ayudar a alguien

de los documentos oficiales

"Django proporciona herramientas para realizar reversiones de URL que coinciden con las diferentes capas donde se necesitan las URL: En plantillas: Uso de la etiqueta de plantilla de URL. En código de Python: Uso de la función reverse () En código de nivel superior relacionado con el manejo de URL del modelo Django instancias: el método get_absolute_url () ".

Por ejemplo: en plantillas (etiqueta url)

<a href="{% url ''news-year-archive'' 2012 %}">2012 Archive</a>

Por ejemplo: en código python (función inversa)

return HttpResponseRedirect(reverse(''news-year-archive'', args=(year,)))

Cuando leo código django a veces, veo en algunas plantillas reverse() . No estoy seguro de qué es esto, pero se usa junto con HttpResponseRedirect. ¿Cómo y cuándo se supone que se usará este reverse() ?

Sería bueno si alguien respondiera con algunos ejemplos ...


El reverse () se usa para adherirse al principio django DRY, es decir, si cambia la url en el futuro, entonces puede hacer referencia a esa url usando reverse (urlname).



La función es compatible con el principio de secado, lo que garantiza que no codifique las URL de su aplicación. Una URL debe definirse en un solo lugar, y solo en un lugar: su URL conf. Después de eso, solo estás haciendo referencia a esa información.

Use reverse() para darle la URL de una página, ya sea la ruta a la vista o el parámetro page_name de su configuración de URL. Lo usarías en casos donde no tiene sentido hacerlo en la plantilla con {% url ''my-page'' %} .

Hay muchos lugares posibles donde puede usar esta funcionalidad. Un lugar que encontré que uso es cuando redirijo a los usuarios en una vista (a menudo después del procesamiento exitoso de un formulario) -

return HttpResponseRedirect(reverse(''thanks-we-got-your-form-page''))

También puede usarlo al escribir etiquetas de plantilla.

Otra vez que utilicé reverse() fue con la herencia del modelo. Tenía un ListView en un modelo principal, pero quería acceder desde cualquiera de esos objetos principales al DetailView de su objeto hijo asociado. get__child_url() una función get__child_url() al padre que identificó la existencia de un niño y devolvió la url de su DetailView usando reverse() .


https://docs.djangoproject.com/en/stable/ref/urlresolvers/#reverse

en tu urls.py define esto:

url(r''^foo$'', some_view, name=''url_name''),

en una plantilla, puede referirse a esta url como:

<!-- django <= 1.4 --> <a href="{% url url_name %}">link which calls some_view</a> <!-- django >= 1.5 or with {% load url from future %} in your template --> <a href="{% url ''url_name'' %}">link which calls some_view</a>

esto se representará como

<a href="/foo/">link which calls some_view</a>

ahora di que quieres hacer algo similar en tu views.py - por ejemplo, estás manejando alguna otra url (not /foo/ ) en alguna otra vista (no en some_view ) y quieres redirigir al usuario a /foo/ (a menudo el caso) en la presentación exitosa del formulario)

podrías simplemente hacer

return HttpResponseRedirect(''/foo/'')

pero, ¿qué urls.py si quiere cambiar la url en el futuro? Tendría que actualizar su urls.py y todas las referencias a él en su código. Esto viola DRY (google it).

en cambio, puedes decir

from django.core.urlresolvers import reverse return HttpResponseRedirect(reverse(''url_name''))

Esto se ve a través de todas las URL definidas en su proyecto para la url definida con el nombre url_name y devuelve la url /foo/ real.

esto significa que se refiere a la url solo por su atributo de name . Si desea cambiar la url o la vista a la que se refiere, puede hacerlo editando un solo lugar: urls.py Esta idea de editar un solo lugar se denomina "No repetir" y es algo por lo que debemos esforzarnos.