entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

1voto

Cómo reutilizar plantilla html en Django

Estoy desarrollando un módulo de cursos en Django, para un sistema.
Tengo un "nav" que es el menú del sitio, ahí tengo varios tipos de cursos.
Para todos esos tipos de cursos hay que hacer exactamente lo mismo:
1) Listar cursos existentes.
2) Crear nuevo curso.
3) Editar curso.
4) Finalizar curso.
Mi pregunta es: cómo puedo hacer que mi plantilla curso.html, cumpla con estas funciones pero trabajando sobre el tipo de curso que el usuario seleccione en el menú "nav".
He preparado todo y hasta ahora me funciona pero con un solo tipo de curso, mi idea es que la plantilla haga exactamente lo mismo para los demás tipos de curso. ¿Alguien sabría decirme como lo logro en Django?, el modelo está compuesto de: "CURSO" y "TIPO_CURSO". Muchas gracias de antemano.

1 Respuesta

1voto

white Puntos75880

podrias formatear plantillas de esta forma:

templates/main.html

{% if section == 'crear' %}
<strong>seccion crear</strong>
{% elif section == 'editar' %}
<strong>seccion editar</strong>
{% elif section == 'finish' %}
<strong>seccion finalizar</strong>
{% else %}
<strong>listar curso</strong>
{% endif %}

donde la variable section indica que mostrar

curso/views.py:

def index(request, section=None):
    return render(request, 'main.html', {'section' : section})

urls.py:

urlpatterns = [
    url(r'^admin/', include(admin.site.urls)),
    url(r'^$', 'curso.views.index'),
    url(regex=r'^section/(?P<section>\w{1,30})/$', view='curso.views.index')
]

urls:

localhost/curso/editar
localhost/curso/crear
localhost/curso/finalizar

de esta forma main.html podria usarse tanto en el mismo modulo como en otro. tambien puedes hacer uso de {% extend 'parent.html' %} o de {% include "curso/editar.html" %} pero tu idea supongo es usar un solo .html

https://docs.djangoproject.com/en/1.7/topics/templates/
https://docs.djangoproject.com/en/1.7/ref/templates/builtins/
https://docs.djangoproject.com/en/1.7/intro/tutorial04/

0voto

ibrames comentado

Muchas gracias white. Formidable.

0voto

ibrames comentado

Ahora bien, qué es mejor?

  1. Crear mi tabla de cursos con un campo llamado "Tipo", que sea ForeignKey con la tabla tipo...?
    ó
  2. Crear mi tabla de cursos con un campo llamado "Tipo" que sea un CharField para llenarlo manualmente?

Mi inquietud es por la eficiencia del sistema dentro de Django y que la base de datos no se me ralentice.

0voto

white comentado

Que bueno te haya servidor, si te sirvio la respuesta no olvides marcarla como solucionada, y recuerda que para nuevas dudas debes abrir un nuevo tema.

saludos

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta