Zusammenfassung der Ressource
Flussdiagrammknoten
- Definir el modelo de datos
models.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
- 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
- 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
- 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
- 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
-
...
<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
- django-admin startproject nombre_proyecto
- python manage.py startapp nombre_app
- <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
- Se muestra el contenido de los registros
- Crear un HTML para borrar un registro
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