208 lines
3.4 KiB
Markdown
208 lines
3.4 KiB
Markdown
AYUDA DJANGO
|
|
|
|
\============
|
|
|
|
Proyecto Django: Blog Simple
|
|
|
|
Este proyecto creará un blog básico donde los usuarios podrán ver una lista de publicaciones y acceder a los detalles de cada una.
|
|
|
|
Paso 1: Instalar Django
|
|
|
|
Si no tienes Django instalado, ejecuta:
|
|
|
|
pip install django
|
|
|
|
Paso 2: Crear un Proyecto Django
|
|
|
|
django-admin startproject blog\_project
|
|
|
|
cd blog\_project
|
|
|
|
Paso 3: Crear la Aplicación del Blog
|
|
|
|
python manage.py startapp blog
|
|
|
|
Registre la aplicación en blog\_project/settings.pydentro de INSTALLED\_APPS:
|
|
|
|
INSTALLED\_APPS = [
|
|
|
|
'django.contrib.admin',
|
|
|
|
'django.contrib.auth',
|
|
|
|
'django.contrib.contenttypes',
|
|
|
|
'django.contrib.sessions',
|
|
|
|
'django.contrib.messages',
|
|
|
|
'django.contrib.staticfiles',
|
|
|
|
'blog', # Agregamos nuestra aplicación
|
|
|
|
]
|
|
|
|
Paso 4: Definir el modelo de publicación
|
|
|
|
Edita blog/models.py:
|
|
|
|
from django.db import models
|
|
|
|
class Post(models.Model):
|
|
|
|
title = models.CharField(max\_length=200)
|
|
|
|
content = models.TextField()
|
|
|
|
created\_at = models.DateTimeField(auto\_now\_add=True)
|
|
|
|
def \_\_str\_\_(self):
|
|
|
|
return self.title
|
|
|
|
Aplica las migraciones para crear la tabla en la base de datos:
|
|
|
|
python manage.py makemigrations
|
|
|
|
python manage.py migrate
|
|
|
|
Paso 5: Registrar el Modelo en el Panel de Administración
|
|
|
|
Edita blog/admin.py:
|
|
|
|
from django.contrib import admin
|
|
|
|
from .models import Post
|
|
|
|
admin.site.register(Post)
|
|
|
|
Crea un superusuario:
|
|
|
|
python manage.py createsuperuser
|
|
|
|
Corre el servidor y accede al panel de administración en http://127.0.0.1:8000/admin:
|
|
|
|
python manage.py runserver
|
|
|
|
Desde ahí, puedes agregar publicaciones manualmente.
|
|
|
|
Paso 6: Crear las Vistas y URL
|
|
|
|
Edita blog/views.py:
|
|
|
|
from django.shortcuts import render, get\_object\_or\_404
|
|
|
|
from .models import Post
|
|
|
|
def lista\_posts(request):
|
|
|
|
posts = Post.objects.all().order\_by('-created\_at')
|
|
|
|
return render(request, 'blog/lista\_posts.html', {'posts': posts})
|
|
|
|
def detalle\_post(request, post\_id):
|
|
|
|
post = get\_object\_or\_404(Post, id=post\_id)
|
|
|
|
return render(request, 'blog/detalle\_post.html', {'post': post})
|
|
|
|
Crea blog/urls.py:
|
|
|
|
from django.urls import path
|
|
|
|
from . import views
|
|
|
|
urlpatterns = [
|
|
|
|
path('', views.lista\_posts, name='lista\_posts'),
|
|
|
|
path('post/<int:post\_id>/', views.detalle\_post, name='detalle\_post'),
|
|
|
|
]
|
|
|
|
Registra las rutas en blog\_project/urls.py:
|
|
|
|
from django.contrib import admin
|
|
|
|
from django.urls import path, include
|
|
|
|
urlpatterns = [
|
|
|
|
path('admin/', admin.site.urls),
|
|
|
|
path('', include('blog.urls')),
|
|
|
|
]
|
|
|
|
Paso 7: Crear las Plantillas HTML
|
|
|
|
Dentro de blog/templates/blog/, crea lista\_posts.html:
|
|
|
|
<!DOCTYPE html>
|
|
|
|
<html>
|
|
|
|
<head>
|
|
|
|
<title>Blog</title>
|
|
|
|
</head>
|
|
|
|
<body>
|
|
|
|
<h1>Publicaciones</h1>
|
|
|
|
<ul>
|
|
|
|
{% for post in posts %}
|
|
|
|
<li>
|
|
|
|
<a href="{% url 'detalle\_post' post.id %}">{{ post.title }}</a>
|
|
|
|
({{ post.created\_at|date:"d M Y" }})
|
|
|
|
</li>
|
|
|
|
{% endfor %}
|
|
|
|
</ul>
|
|
|
|
</body>
|
|
|
|
</html>
|
|
|
|
Crea detalle\_post.html:
|
|
|
|
<!DOCTYPE html>
|
|
|
|
<html>
|
|
|
|
<head>
|
|
|
|
<title>{{ post.title }}</title>
|
|
|
|
</head>
|
|
|
|
<body>
|
|
|
|
<h1>{{ post.title }}</h1>
|
|
|
|
<p>{{ post.created\_at|date:"d M Y" }}</p>
|
|
|
|
<p>{{ post.content }}</p>
|
|
|
|
<a href="{% url 'lista\_posts' %}">Volver al blog</a>
|
|
|
|
</body>
|
|
|
|
</html>
|
|
|
|
Paso 8: Ejecutar el Proyecto
|
|
|
|
Corre el servidor:
|
|
|
|
python manage.py runserver
|
|
|
|
Abre http://127.0.0.1:8000/y prueba la aplicación.
|