3
7a_Proyecto_Web_Completo
jp.av.dev edited this page 2021-07-02 22:18:38 -04:00
Proyecto Web
Ejémplo estructura común página web
+-------------------------------------+
| +------+ +-------------------+ |
| | Logo | | Menu | |<---- cont. estatico y dinamico
| +------+ +-------------------+ |
| +-------------------------------+ |
| | | |
| | | |
| | Zona de Carga | |
| | | |
| | de Contenido | |<---- cont. estatico y dinamico
| | | |
| | | |
| | | |
| +-------------------------------+ |
| +-------------------------------+ |
| | Pie de página | | <---- rrss, contacto
| +-------------------------------+ |
+-------------------------------------+
El contenido a mostar en la zona de carga dependerá
de lo seleccionado en menú o pie de página.
- Crear URLs y Vistas
- Crear Plantillas y herencias
- Manejar archivos externos
- Conf. panel de administración
- Conf. conexión a BBDD
- CRUD con BBDD
- Trabajo con formularios y envío de mails
- Depsliege
Inicio ProyectoWeb
django-admin startproject ProyectoWeb
cd ProyectoWeb
python3 manage.py startapp ProyectoWebApp
# configuar settings.py (TimeZone, idioma, ip , mail, bd...)
python3 manage.py runserver 192.168.0.4:8000
Creación de las Vistas
Menu:
- Home
- Servicios
- Tienda
- Blog
- Contacto
(admin)
App/views.py
from django.shortcuts import render, HttpResponse
def home(request):
return HttpResponse("Inicio")
def servicios(request):
return HttpResponse("Servicios")
def tienda(request):
return HttpResponse("Tienda")
def blog(request):
return HttpResponse("Blog")
def contacto(request):
return HttpResponse("Contacto")
Registro de URLs
Project/urls.py
from django.contrib import admin
from django.urls import path
from ProyectoWebApp import views
urlpatterns = [
path('admin/', admin.site.urls),
path('', views.home, name="Inicio"),
path('servicios/', views.servicios, name ='Servicios'),
path('tienda/', views.tienda, name ='Tienda'),
path('blog/', views.blog, name ='Blog'),
path('contacto/', views.contacto, name='Contacto'),
]
Como es común un proyecto se compone de varias Apps
Y una App puede ser reutilizada en otro proyecto
urls.py explica como organizar urls para manejar multiples Apps
Organizar URLs por App
Including another URLconf
- 1. Import the include() function: from django.urls import include, path
- 2. Add a URL to urlpatterns: path('blog/', include('blog.urls'))
Project/urls.py
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('ProyectoWebApp/', include('ProyectoWebApp.urls')),
]
Para evitar tener que escribir misitio.com/ProyectoWebApp/home
Especificar ''
el path en ProyectoWeb/urls.py
Crear urls.py en la carpeta de la aplicacion
App/urls.py
from django.urls import path
from ProyectoWebApp import views
urlpatterns = [
path('', views.home, name="Inicio"),
path('servicios/', views.servicios, name ='Servicios'),
path('tienda/', views.tienda, name ='Tienda'),
path('blog/', views.blog, name ='Blog'),
path('contacto/', views.contacto, name='Contacto'),
]
Crear Templates
├── 📁️ ProyectoWeb/
├── 📁️ ProyectoWebApp/
│ ├── 📂️ templates/
│ │ └── 📂️ ProyectoWebApp/
│ │ ├── 📄️ blog.html
│ │ ├── 📄️ contacto.html
│ │ ├── 📄️ home.html
│ │ ├── 📄️ servicios.html
│ │ └── 📄️ tienda.html
Estructura de directorios por convención:
ProyectoWebApp/templates/ProyectoWebApp/
Registrar App
Project/settings.py
INSTALLED_APPS = [
...
'ProyectoWebApp',
]
Modificar vistas para html
App/views.py
from django.shortcuts import render, HttpResponse
def home(request):
return render(request, "ProyectoWebApp/home.html")
def servicios(request):
return render(request, "ProyectoWebApp/servicios.html")
def tienda(request):
return render(request, "ProyectoWebApp/tienda.html")
def blog(request):
return render(request, "ProyectoWebApp/blog.html")
def contacto(request):
return render(request, "ProyectoWebApp/contacto.html")