Creacion de Un Proyecto en Django
1. Crear un Entorno Virtual, abrimos el cmd y nos ubicamos en la carpeta donde crearemos nuestro proyecto y usamos el siguiente comando
python -m venv entornos_biblioteca //python -m venv env_blogfunciones
2. Activamos el entorno

3. usando el cmd instalamos django y los demas repositorios necesarios para trabajar en nuestro proyecto
pip install django //Django==3.0.4
pip install unipath //Unipath==1.1
pip install psycopg2 //psycopg2==2.8.4
pip install pillow //Pillow==7.0.0
la otra opcion es instalar desde la carpeta requeriments
pip install -r "local windows.txt"

4. creamos el proyecto debemos ir a la ruta donde queremos crear el proyecto, para ello debemos tener el entorno activado en este caso (libro)
django-admin startproject biblioteca
5. abrimos la carpeta biblioteca con el editor de codigo en este caso visual studio code
6. creamos la carpeta settings en la misma altura del archivo settings.py y dentro los archivos : base.py, local.py , prod,py y creamos el archivo __init__.py

7. configuramos los archivos base.py y local.py
base.py
"""
Django settings for biblioteca project.
Generated by 'django-admin startproject' using Django 3.2.14.
For more information on this file, see
https://docs.djangoproject.com/en/3.2/topics/settings/
For the full list of settings and their values, see
https://docs.djangoproject.com/en/3.2/ref/settings/
"""
import os
from unipath import Path
# Build paths inside the project like this: BASE_DIR / 'subdir'.
BASE_DIR = Path(__file__).ancestor(3)
# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/3.2/howto/deployment/checklist/
# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = 'django-insecure-2^j7g753+1i-dfxa+ls^q2nm(@t21ml757c9kxz!ri&q8qri84'
# SECURITY WARNING: don't run with debug turned on in production!
# Application definition
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.postgres',
#local apps
'applications.autor',
'applications.libro',
'applications.lector',
]
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
ROOT_URLCONF = 'biblioteca.urls'
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [BASE_DIR.child('templates')],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
WSGI_APPLICATION = 'biblioteca.wsgi.application'
AUTH_PASSWORD_VALIDATORS = [
{
'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
},
]
# Internationalization
# https://docs.djangoproject.com/en/3.2/topics/i18n/
LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'UTC'
USE_I18N = True
USE_L10N = True
USE_TZ = True
local.py
from .base import *
DEBUG = True
ALLOWED_HOSTS = []
# Database
# https://docs.djangoproject.com/en/3.2/ref/settings/#databases
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'dbbiblioteca',
'USER': 'neunapp',
'PASSWORD': 'neunapp2020',
'HOST': 'localhost',
'PORT': '5432',
}
}
STATIC_URL = '/static/'
STATICFILES_DIRS = [BASE_DIR.child('static')]
MEDIA_URL = '/media/'
MEDIA_ROOT = BASE_DIR.child('media')
# Default primary key field type
# https://docs.djangoproject.com/en/3.2/ref/settings/#default-auto-field
DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
urls.py
"""biblioteca URL Configuration
The `urlpatterns` list routes URLs to views. For more information please see:
https://docs.djangoproject.com/en/3.2/topics/http/urls/
Examples:
Function views
1. Add an import: from my_app import views
2. Add a URL to urlpatterns: path('', views.home, name='home')
Class-based views
1. Add an import: from other_app.views import Home
2. Add a URL to urlpatterns: path('', Home.as_view(), name='home')
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'))
"""
from django.contrib import admin
from django.urls import path,re_path,include
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
path('admin/', admin.site.urls),
re_path('',include('applications.autor.urls')),
re_path('',include('applications.libro.urls')),
re_path('',include('applications.lector.urls')),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
8. Creamos la carpeta templates a la misma altura del manage.py
9. creamos una base de datos desde la shell de postgresql, primero accedemos con el password a postgresql
luego creamos un usuario y accedemos a la bd:
create user neunapp;
\c
create database dbbiblioteca;
10. acccedemos a la bd creada y definimos el password debe salirnos el mensaje de alter role
\c dbbiblioteca;
alter user neunapp with password 'neunapp2020';
11. Configuramos los archivos manage.py y wsgi.py y agregamos el ".local"
manage.py
#!/usr/bin/env python
"""Django's command-line utility for administrative tasks."""
import os
import sys
def main():
"""Run administrative tasks."""
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'biblioteca.settings.local')
try:
from django.core.management import execute_from_command_line
except ImportError as exc:
raise ImportError(
"Couldn't import Django. Are you sure it's installed and "
"available on your PYTHONPATH environment variable? Did you "
"forget to activate a virtual environment?"
) from exc
execute_from_command_line(sys.argv)
if __name__ == '__main__':
main()
wsgi.py
"""
WSGI config for biblioteca project.
It exposes the WSGI callable as a module-level variable named ``application``.
For more information on this file, see
https://docs.djangoproject.com/en/3.2/howto/deployment/wsgi/
"""
import os
from django.core.wsgi import get_wsgi_application
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'biblioteca.settings.local')
application = get_wsgi_application()
Si no ejecuta fijate bien la ubicacion de la carpeta settings y la configuracion de sus archivos
12 hacemos el makemigrations, migrate ,createsuperuser y runserver
python manage.py makemigrations
python manage.py migrate
python manage.py createsuperuser
python manage.py runserver



13. creamos la carpeta applications a la altura del manage.py y creamos el archivo __init__.py
14. entramos al cmd y vamos a la carpeta applications y creamos las apps con el siguiente comando
django-admin startapp libro
django-admin startapp autor
django-admin startapp lector
django-admin startapp home

15. dentro de cada app crearle el archivo urls.py a cada app, por ejemplo dentor de autor crearle el archivo urls.py
from django.contrib import admin
from django.urls import path
from .import views
app_name = "autor_app"
urlpatterns = [
]
16. dentro del archivo apps.py de cada app revisar si puede correr con la configuracion por defecto o si se le tiene q agregar 'applications' .
debe quedar asi
from django.apps import AppConfig
class HomeConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'applications.home'
Base de Datos

No hay comentarios aún
Sé el primero en comentar este artículo