Proyecto de chat en tiempo real con Django Channels implementando:
- 1: configurar documentacion
- 2: configurar web socket: canales
- 3: configurar correos
- 4: configurar la base de datos
- 5: configurar usuarios: roles + override + permission + authentication, no eliminar usuarios se desactivan
- 6: configurar los cors
- 7: aplicacion room: id, name, created_at, deleted_at, user_id, al eliminar un chat se cambia el state de sus comentarios: creacion, eliminacion, consulta, solo el usuario creador la puede eliminar o editar
- 8: aplicacion comments: id, content, room, created_at, updated_at, CRUD completo
- 9: implementar stored procedure con parametros
python -m venv ./env/env1
./env/env1/Scripts/activate
- Documentacion Python Install Packege
- modificar el archivo settings.py
LANGUAGE_CODE = 'es'
pip install django
pip install djangorestframework
- Documentacion djangorestframework
- requiere configurar el archivo settings.py, para agrear rest_framework
pip install -U drf-yasg
- requiere configurar el archivo settings.py, para agrear drf_yasg
- requiere configurar el archivo settings.py, para definir rutas estaticas
- requiere configurar el archivo urls.py, para agrear drf_yasg
- Documentacion drf-yasg
pip install setuptools - Se debe instalar para que funcione correctamente otras dependencias
- generar achivos estaticos
python manage.py collectstatic - agregar los archivos estaticos a settings.py
STATIC_URL = '/static/'
STATIC_ROOT = './static/'
pip install django-cors-headers
- Documentacion django-cors-headers
- requiere configurar el archivo settings.py, para agrear corsheaders
INSTALLED_APPS = [
...,
"corsheaders",
...,
]
MIDDLEWARE = [
...,
"corsheaders.middleware.CorsMiddleware",
"django.middleware.common.CommonMiddleware",
...,
]
CORS_ALLOWED_ORIGINS = [
"http://localhost:5173",#local react
]
pip install channels ✅
- Documentacion channels
INSTALLED_APPS = [
...,
'channels',
...,
]
ASGI_APPLICATION = 'chat_api.asgi.application'
CHANNEL_LAYERS = {
"default": {
"BACKEND": "channels.layers.InMemoryChannelLayer"
}
}
CHANNELS_ALLOWED_HOSTS = ['*']
- crear la aplicacion que consume los canales
- configurar el archivo consumers.py de la aplicacion
- configurar el canal en el archivo routing.py de la aplicacion
pip install djangorestframework_simplejwt
- Documentacion djangorestframework_simplejwt
- configurar settings.py
import datetime
INSTALLED_APPS = [
...
'rest_framework_simplejwt',
...
]
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': (
'rest_framework_simplejwt.authentication.JWTAuthentication',
)
}
SIMPLE_JWT = {
'ACCESS_TOKEN_LIFETIME': datetime.timedelta(days=1),
'REFRESH_TOKEN_LIFETIME': datetime.timedelta(days=1),
}
- configurar router.py de la aplicacion users
from rest_framework_simplejwt.views import (
TokenObtainPairView,
TokenRefreshView,
)
urlpatterns = [
...
path('auth/login/', TokenObtainPairView.as_view(), name='login'),
path('auth/refresh/', TokenRefreshView.as_view(), name='refresh'),
...
]
- Pagina para configurar el token jwt.io
pip install pymysql
- Documentacion pymysql
- Configurar settings
import pymysqlpymysql.version_info = (1, 4, 6, 'final', 0)pymysql.install_as_MySQLdb()
pip install django-ckeditor
DATABASES = {
default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'bd_chat',
'USER': 'root',
'PASSWORD': '',
'HOST': 'localhost',
'PORT': '3306',
'OPTIONS': {
'charset': 'utf8mb4',
},
}
}
-
configuracion de email en settings.py
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'EMAIL_HOST = 'smtp.gmail.com'EMAIL_USE_TLS = TrueEMAIL_PORT = 587EMAIL_HOST_USER ='correo'EMAIL_HOST_PASSWORD = 'contraseña unica'EMAIL_TIMEOUT = 300DEFAULT_FROM_EMAIL = EMAIL_HOST_USER -
crear un archivo llamado email.py en la carpeta utils
-
configurar el archivo email.py
- crear el proyecto
django-admin startproject chat_api - agregar el proyecto a settings.py
django-admin startapp users
- agregar la aplicacion a settings.py
- definir la aplicacion como auth_user_model en settings.py
- configurar el admin.py
- configurar el modelo
- crear la carpeta api
- crear archivo serializers.py
- crear archivo views.py
- crear archivo routers.py
- agregar la aplicacion a urls.py
- modificar el archivo settings.py
AUTH_USER_MODEL = 'user.User'
- configurar el archivo models.py
- cambiar registro de superusuario
USERNAME_FIELD = 'email'
REQUIRED_FIELDS = ['username','first_name', 'last_name']
pip install django-ckeditor
python manage.py createsuperuser
django-admin startapp room
django-admin startapp comments
- generar archivo requirements.txt
pip freeze > requirements.txt
pip install -r requirements.txt
Python manage.py runserve