No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Aprende todo un fin de semana sin pagar una suscripci贸n 馃敟

Aprende todo un fin de semana sin pagar una suscripci贸n 馃敟

Reg铆strate

Comienza en:

0D
13H
40M
41S
Curso B谩sico de Django

Curso B谩sico de Django

Facundo Garc铆a Martoni

Facundo Garc铆a Martoni

Utilizando la etiqueta url para evitar el hard coding

23/29
Recursos

Aportes 10

Preguntas 7

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

o inicia sesi贸n.

href=" {% url  'polls:detail'  question. id  %} "

recuerden que la varible que agreg贸 en la urls. py de la 鈥渁pp polls鈥 app_name=鈥減olls鈥 no la est谩 usando. y polls esta disponible por que asi le puso en las urls de del proyecto en general.

path(''polls/", include(('polls.urls', 'polls'), name='polls')),

psdt no estoy siguiendo el curso en codigo. solo mirando.

En un principo no me funcionaba porque no recargaba localhost:8888/polls ya que quedaba en cache la pagina, sin los cambios en el HTML

Utilizando la etiqueta url para evitar el hard coding

Conectamos urls. py con los templates:

from django. urls import path

from . import views

app_name = "polls"

urlpatterns = [
    # * ex: /polls/
    path('', views. index, name="index"),
    # * ex: /polls/3
    path('<int:question_id>/', views. detail, name="detail"),
    # * ex: /polls/3/results
    path('<int:question_id>/results/', views. results, name="results"),
    # * ex: /polls/3/vote
    path('<int:question_id>/vote/', views. vote, name="vote"),
]

{% if latest_question_list %}
<ul>
  {% for question in latest_question_list %}
  <li>
    <a href="{% url 'polls:detail' question. id %}"
      >{{ question.question_text }}</a
    >
    {% comment %} polls sale del app_name y detail sale del name de la vista en
    urls.py {% endcomment %}
  </li>
  {% endfor %}
</ul>
{% else %}
<p>No polls are available.</p>
{% endif %}

SI no les carga los cambios, simplemente reinicien el servidor y recargan la pagina y les funcionara sin problemas.

Extends
Esta etiqueta se puede utilizar de dos formas:

{% extends 鈥渂ase.html鈥 %} (con comillas) usa el valor literal 鈥渂ase.html鈥 como el nombre de la plantilla principal para extender.

{% extiende la variable%} usa el valor de la variable. Si la variable se eval煤a como una cadena, Django usar谩 esa cadena como el nombre de la plantilla principal. Si la variable se eval煤a como un objeto Plantilla, Django usar谩 ese objeto como plantilla principal.

Excelente clase, mucho ojo con la variable app_name ya que s铆 la utiliza internamente.

app_name = 'polls'

at index.html we are hard coding at the href link and this can be fuckd up if we change the path or the name of the app.

How to avoid it 鈫 modularizing our code

First, we have to set an app name to pass into the href of index.html

urls,py

from django.urls import path
from . import views #from here import...

**app_name = "polls"**
urlpatterns = [
    #ex: /polls/
    path("", views.index, name="index"),
    #ex: /polls/5/
    **path("<int:question_id>/details/pruebadecambiopademostrarquefuncionalaurltag", views.detail, name="detail"),**
    #ex: /polls/5/results
    path("<int:question_id>/results/", views.results, name="results"),
    #ex: /polls/5/vote
    path("<int:question_id>/vote/", views.vote, name="votes"),    
]

# "< >/ is the way we pass parameters and variables through the url we are setting"

at index,html

{% if latest_question_list %}
    <ul>
        {% for question in latest_question_list %}
            <li><a href="{% url 'polls:detail' question.id %}">{{ question.question_text }}</a></li>
        {% endfor %}
    </ul>
{% else %}
    <p>No polls are available 馃槗.</p>
{% endif %}

Hard-code: T茅rmino del mundo de la inform谩tica que hace referencia a una pr谩ctica en el desarrollo de software que consiste en incrustar datos directamente en el c贸digo fuente del programa.

Para evitar el hard-code en nuestro programa vamos a usar la etiqueta url en el archivo index.html

            <li><a href="{% url 'polls:detail' question.id %}">
                {{ question.question_text }}
            </a></li>

Para que la url funcione de forma adecuada debemos asignar el nombre de nuestra aplicaci贸n en la variable app_name = "polls"

De esta forma se puede con libertad cambiar las urls sin afectar los templates o archivos asociados.

Por si alguien tiene la duda:

{% url 'pollos:detalle' question.id %}

El primer par谩metro que recibe la etiqueta URL es el app_name, en este caso app_name = 鈥減ollos鈥.

El segundo par谩metro lo saca del name que defini贸 en el path, en este caso name = 鈥渄etalle鈥.

El tercer par谩metro es el identificador de la pregunta.

Que prooo