Flowchart
Django - Trabajar con datos (guía)
Flowchart content
Definir el modelo de datos
models.py
Inicio
Registrar en
admin.py
Visualizar 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
...
modelo_create.html
Por funciones
views.py
2 vías alternativas
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 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.html
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 agregar 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_id.delete()
return redirect('alias_modelo_listar')
views.py
Modificar modelo_read.html para poder eliminar
modelo_read.html
No existe un modelo_delete.html
No se crea un modelo_delete.html
Modificar el template de listado para mostrar los datos
modelo_read.html
Crear la clase en class_views.py para listar
class_view.html
Por clases
class_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(...)
class_view.py
Crear la ruta para poder acceder a modelo_listar
urls.py
Crear la clase en class_view.py para agregar un registro
class_view.py
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
Modificar modelo_update.html para crear el formulario de actualización
modelo_update.html
Crear la clase en class_view.py para modificar
class_view.py
Crear la ruta para poder acceder a la función modelo_modificar(views.py)
urls.py
Modificar modelo_read.html para poder modificar
modelo_read.html
Crear la clase en class_view.py para borrar un registro del modelo
class_view.py
Crear la ruta para poder acceder a la función 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
succes_url = reverse_lazy( 'modelo_read')
class_view.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
succes_url = reverse_lazy( 'modelo_read')
class_view.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' modelo.id %}" ><a href = "{}"></td>
</tr>
{% endfor %}
</tbody>
</table>
</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'
succes_url = reverse_lazy( 'modelo_read')
class_view.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
<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 ... %}"> <a href="{% url 'alias_modelo_eliminar' modelo.id %}">}}</td>
</tr>
{% endfor %}
</tbody>
</table>
</body>
modelo_read.html
Fin
...
<form method = post"">
{% csfr_token %}
<h1>Desea eliminar el registro de {{ object }}?</h>
<button type = "submit" name = "button"> Confirmar</button>
<a href = {% url modelo %}
</form>
modelo_delete.html
Crear modelo_delete.html para poder eliminar
modelo_delete.html
Information
- Description
- User has deleted their subject information Flowchart on Django - Trabajar con datos (guía), created by Deleted user on 18/01/2021.
- Created by
- Deleted user
- Views
- 13
- History
-
- Created by José Luis Cribb · Jan 8, 2021
- Copied by José Luis Cribb · Jan 18, 2021
- Rating