Django - Trabajar con datos (guía)

Descripción

Laboratorio Programación Diagrama sobre Django - Trabajar con datos (guía), creado por José Luis Cribb el 08/01/2021.
José Luis Cribb
Diagrama por José Luis Cribb, actualizado hace más de 1 año
José Luis Cribb
Creado por José Luis Cribb hace más de 3 años
5
0

Resumen del Recurso

Nodos de los diagramas

  • Definir el modelo de datos  models.py
  • Inicio
  • Registrar en admin.py
  • CRUD en el sistema de administración de Django
  • Crear la clase particular para cada modelo forms.py
  • class modelo_nombre(models.Model):    nombre_campo_1 = ...    nombre_campo_n = ...    def __str__(self):       return self.<nombre_campo_?> model.py
  • class modelo_form( forms.ModelForm):    class Meta:       model= <modelo_nombre>       fields= '__all__'/(<campo_1>, <campo_n>,) forms.py
  • from django.contrib import admin from <path.>models import <nombre_modelo> admin.site.register(<modelo_nombre>) admin.py
  • Establecer la carpeta dónde buscar  los HTML (templates) sesttings.py
  • TEMPLATES = [     {         'BACKEND': 'django.template.backends.django.DjangoTemplates',         'DIRS': ['../nombre_app/<carpeta_template>'], settings.py
  • Por funciones views.py
  • 2 modos alternativos
  • from django.shortcuts import render, redirect from <path.>models import modelo_nombre from <path.>forms import modelo_form   def modelo_modificar(request, id):    var_id = modelo_nombre.objects.get( id = id)    if request.method == "GET":       get_form = modelo_form( instance = var_id)        <var_dic> = { 'clave : get_form'}    else:       post_form = modelo_form( request.POST, instance = var_id)       var_dic = { 'clave : post_form '}       if post_form.is_valid():          post_form.save()          return redirect( 'alias_modelo_listar')    return render( request, modelo_update.html, var_dic) views.py
  • Crear la ruta para poder acceder a la función modelo_listar urls.py
  • // Para views.py from <path_app.>views import modelo_listar // Para class_view.py from <path_app.>class_view import modelo_listar   urlpatterns = [     path('admin/', admin.site.urls),    // views.py     path('listar/', modelo_listar, name = 'alias_modelo_listar'),    // class_view.py     path('listar/', modelo_listar.as_view, name = 'alias_modelo_listar'),   ] urls.py
  • Crear la vista (lógica del programa) para mostrar los datos
  • Crear la función en ​​​​views.py para listar views.py
  • Crear el archivo HTML para listar los registros read.html
  • Crear un HTML para agregar un registro create.html
  • Crear un HTML para modificar un registro update.html
  • from django.shortcuts import render from <path.>models import <modelo_nombre> from <path.>forms import <modelo_form>   def modelo_listar(request):    var_reg = modelo_nombre.objects.all()    var_dic = { 'clave_dic':var_reg}    return render( request, modelo_read.html, var_dic) views.py
  • <body> ...    <table>       <thead>          <tr>             <th>texto_cab_1</th>             <th>texto_cab_n</th>          </tr>       </thead>       <tbody> // views.py          {% for var_registro in clave_dic %} // class_view.py          {% for var_registro in object_list %}               <tr>                <td>{{ var_registro.nombre_campo_1 }}</td>                <td>{{ var_registro.nombre_campo_n }}</td>             </tr>          {% endfor %}       </tbody>    </table> </body> modelo_read.html
  • ... modelo_read.html
  • Modificar el template de listado para mostrar los datos modelo_read.html
  • Crear la función en views.py para crear un registro views.py
  • from django.shortcuts import render, redirect from <path.>models import modelo_nombre from <path.>forms import modelo_form   def modelo_crear(request):    if request.method == 'GET':       get_form = modelo_form()       var_dic = { 'form': get_form}    else:        post_form = modelo_form( request.POST)        var_dic = { 'form': post_form}         if crear_form.is_valid():             crear_form.save()             return redirect('alias_modelo_listar')    return render( request, modelo_create.html, var_dic) views.py
  • ... modelo_update.html
  • Crear la ruta para poder acceder a la función modelo_crear (views.py) urls.py
  • Modificar modelo_create.html  para crear el formulario de creación modelo_create.html  
  • ... <form method="post">    {% csrf_token %}    {{ form.as_p }}    <button type="submit">CREAR</button> </form> modelo_create.html
  • Modificar modelo_read.html  para poder modificar modelo_read.html
  • Crear la función en views.py para modificar views.py
  • ... <form method="post">    {% csrf_token %}    {{ form.as_p }}    <button type="submit">MODIFICAR</button> </form> modelo_update.html
  • Modificar modelo_update.html para crear el formulario de actualización modelo_update.html
  • Crear la ruta para poder acceder a la función modelo_modificar(views.py) urls.py
  • Crear la función en views.py para borrar un registro del modelo views.py
  • Crear la ruta para poder acceder a la función modelo_eliminar(views.py) urls.py
  • from django.shortcuts import render, redirect from <path.>models import modelo_nombre from <path.>forms import modelo_form   def modelo_eliminar(request, id):    var_id = modelo_nombre.objects.get( id = id)    var_dic = { 'clave : var_id }   if request.method == "POST"       var_id.delete()        return redirect('alias_modelo_listar')    return render( request, 'alias_modelo_eliminar', var_dic)   views.py
  • Modificar modelo_read.html para poder eliminar modelo_read.html
  • Modificar el template de listado para mostrar los datos modelo_read.html
  • Crear la clase en ​​​​views.py para listar views.py
  • Por clases views.py
  • from django.shortcuts import render from django.views.generic import ListView from <path.>models import modelo_nombre from <path.>forms import modelo_form   class modelo_listar( ListView):    model = modelo_nombre    template_name = 'modelo_read.html' // si necesito redefinir la función con algún filtro    def get_queryset( self):       return self.model.objects.filter(...)   views.py
  • Crear la ruta para poder acceder a la clase modelo_listar urls.py
  • Crear la clase en views.py para crear un registro views.py
  • Crear la ruta para poder acceder a la clase modelo_crear (views.py) urls.py
  • Modificar modelo_create.html  para crear el formulario de creación modelo_create.html
  • Modificar modelo_update.html para crear el formulario de actualización modelo_update.html
  • Crear la clase en views.py para modificar views.py
  • Crear la ruta para poder acceder a la clase modelo_modificar urls.py
  • Modificar modelo_read.html  para poder modificar modelo_read.html
  • Crear la clase en views.py para borrar un registro del modelo views.py
  • Crear la ruta para poder acceder a la clase modelo_eliminar(views.py) urls.py
  • from django.shortcuts import render from django.views.generic import ListView, CreateViews from django.urls import reverse_lazy from <path.>models import modelo_nombre from <path.>forms import modelo_form   class modelo_crear( CreateView):    model = modelo_nombre    form_class = modelo_form    template_name = 'modelo_create.html'    success_url = reverse_lazy( 'modelo_read')     views.py
  • // Para views.py from <path_app.>views import modelo_listar, modelo_crear // Para class_view.py from <path_app.>class_view import modelo_listar, modelo_crear   urlpatterns = [     path('admin/', admin.site.urls),    // views.py     path('listar/', modelo_listar, name = 'alias_modelo_listar'),     path('crear/', modelo_crear, name = 'alias_modelo_crear'),    // class_view.py     path('listar/', modelo_listar.as_view, name = 'alias_modelo_listar'),     path('crear/', modelo_crear.as_view, name = 'alias_modelo_crear'),   ] urls.py
  • from django.shortcuts import render from django.views.generic import ListView, CreateViews, UpadateViews from django.urls import reverse_lazy from <path.>models import modelo_nombre from <path.>forms import modelo_form   class modelo_modificar( UpdateView):    model = modelo_nombre    form_class = modelo_form    template_name = modelo_update.html    success_url = reverse_lazy( 'alias_modelo_listar')     views.py
  • // Para views.py from <path_app.>views import modelo_listar, modelo_crear, modelo_modificar // Para class_view.py from <path_app.>class_view import modelo_listar, modelo_crear, modelo_modificar   urlpatterns = [     path('admin/', admin.site.urls),    // views.py     path('listar/', modelo_listar, name = 'alias_modelo_listar'),     path('crear/', modelo_crear, name = 'alias_modelo_crear'),     path('modificar/<int:id>', modelo_modificar, name = 'alias_modelo_modificar'),    // class_view.py     path('listar/', modelo_listar.as_view, name = 'alias_modelo_listar'),     path('crear/', modelo_crear.as_view, name = 'alias_modelo_crear'),     path('modificar/<int:pk>', modelo_modificar.as_view, name = 'alias_modelo_modificar'),   ] urls.py
  • <body> ...    <table>       <thead>          <tr>             <th>texto_cab_1</th>             <th>texto_cab_n</th>             <th>OPCION</th>          </tr>       </thead>       <tbody> // views.py          {% for var_registro in clave_dic %} // class_view.py          {% for var_registro in object_list %}               <tr>                <td>{{ var_registro.nombre_campo_1 }}</td>                <td>{{ var_registro.nombre_campo_n }}</td>                <td><a href = "{% url 'alias_modelo_modificar' var_registro.id %}" >EDITAR</a><a href = "{}"></a></td>             </tr>          {% endfor %}       </tbody>    </table>    <a href = "{% url 'alias_modelo_crear' %}">Nuevo</a> </body> modelo_read.html
  • from django.shortcuts import render from django.views.generic import ListView, CreateViews, UpadateViews, DeleteView from django.urls import reverse_lazy from <path.>models import modelo_nombre from <path.>forms import modelo_form   class modelo_eliminar( DeleteView):    model = modelo_nombre    template_name = 'modelo_delete.html'    success_url = reverse_lazy( 'alias_modelo_listar')     views.py
  • // Para views.py from <path_app.>views import modelo_listar, modelo_crear, modelo_modificar, modelo_eliminar // Para class_view.py from <path_app.>class_view import modelo_listar, modelo_crear, modelo_modifica, modelo_eliminar   urlpatterns = [     path('admin/', admin.site.urls),    // views.py     path('listar/', modelo_listar, name = 'alias_modelo_listar'),     path('crear/', modelo_crear, name = 'alias_modelo_crear'),     path('modificar/<int:id>', modelo_modificar, name = 'alias_modelo_modificar'),     path('modificar/<int:id>', modelo_eliminar, name = 'alias_modelo_eliminar'),    // class_view.py     path('listar/', modelo_listar.as_view, name = 'alias_modelo_listar'),     path('crear/', modelo_crear.as_view, name = 'alias_modelo_crear'),     path('modificar/<int:pk>', modelo_modificar.as_view, name = 'alias_modelo_modificar'),     path('modificar/<int:pk>', modelo_eliminar.as_view, name = 'alias_modelo_eliminar'),   ] urls.py
  • Fin
  •   ... <form method = "post">    {% csfr_token %}    <h1>Desea eliminar el registro de {{ object }}?</h1>    <button type = "submit" name = "button"> Confirmar</button>    <a href = {% url modelo %} </form> modelo_delete.html
  • Modificar modelo_delete.html para poder eliminar modelo_delete.html
  • Crear una aplicación en CMD
  • Crear un proyecto en CMD
  • django-admin startproject nombre_proyecto
  • python manage.py startapp nombre_app
  • Visualizar en pantalla
  • <body> ...    <table>       <thead>          <tr>             <th>texto_cab_1</th>             <th>texto_cab_n</th>             <th>OPCION</th>          </tr>       </thead>       <tbody> // views.py          {% for var_registro in clave_dic %} // class_view.py          {% for var_registro in object_list %}               <tr>                <td>{{ var_registro.nombre_campo_1 }}</td>                <td>{{ var_registro.nombre_campo_n }}</td>                <td><a href = "{...}" >...</a><a href = "{{% url 'alias_modelo_eliminar' var_registro.id %}}">ELIMINAR</a></td>             </tr>          {% endfor %}       </tbody>    </table>    <a href = "{% url 'alias_modelo_crear' %}">Nuevo</a></body> modelo_read.html
  • Modificar modelo_read.html para poder eliminar modelo_read.html
  • <body> ...    <table>       <thead>          <tr>             <th>texto_cab_1</th>             <th>texto_cab_n</th>          </tr>       </thead>       <tbody> // views.py          {% for var_registro in clave_dic %} // class_view.py          {% for var_registro in object_list %}               <tr>                <td>{{ var_registro.nombre_campo_1 }}</td>                <td>{{ var_registro.nombre_campo_n }}</td>             </tr>          {% endfor %}       </tbody>    </table>    <a href = "{% url 'alias_modelo_crear' %}">Nuevo</a> </body> modelo_read.html
  • Modificar modelo_read.html  para agregar enlace a modelo_create.html modelo_read.html
  • Modificar modelo_read.html  para agregar enlace a modelo_create.html modelo_read.html
  • Recomendado
  • Se muestra el contenido de los registros
  • Modificar
  • Eliminar
  • Modificar
  • Modificar
  • Modificar
  • Eliminar
  • Eliminar
  • Eliminar
  • Nuevo
  • modelo_nombre
  • Vista general del CRUD
  • Cabecera de campos
  • Opción
  • Crear un HTML para borrar un registro delete.html
  • ... modelo_create.html
  • ... modelo_delete.html
  • Modificar modelo_delete.html para poder eliminar modelo_delete.html
  •   ... <form method = "post">    {% csfr_token %}    <h1>Desea eliminar el registro de {{ var_dic.campo }}?</h1>    <button type = "submit" name = "button"> Confirmar</button>    <a href = {% url modelo %} </form> modelo_delete.html
Mostrar resumen completo Ocultar resumen completo

Similar

Operadores Python
Giovanni Sanhuez
Mis Recursos de Programación
maya velasquez
FUNDAMENTOS DE REDES DE COMPUTADORAS
anhita
Mapa Conceptual de la arquitectura de base de datos
Alan Alvarado
Abreviaciones comunes en programación web
Diego Santos
codigos QR
Cristina Padilla
Editor Dibujo Paint
gladiscj
ANALISIS SISTEMATICO DE LA COMPUTADORA Y LOS PERIFERICOS QUE LO INTEGRAN
Ana pinzon
Herramientas de Software para Comercio y Finanzas
mishelleisabel
Historia de la Computadora
Diego Santos
BASES DE DATOS
Horst Berndt Reyes