Aún no tienes acceso a esta clase

Crea una cuenta y continúa viendo este curso

Conclusiones del curso

36/37
Recursos

Felicidades, hemos llegado al final del curso.

Reto final
Ahora te toca a tí agregar la funcionalidad de seguir a usuarios y de darle like a publicaciones.

Te recomiendo que siempre estés leyendo el código fuente y la documentación oficial, ya que son los puntos fuertes de Django. Acércate a la comunidad, acércate a los foros y mantente actualizado.

Tenemos más contenido planeado para este curso así que cuéntanos qué te gustaría ver a futuro.

Aportes 30

Preguntas 5

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.

Dos cosas no me gustaron del curso, por lo demás fue perfecto.

  • Que no se resolvieron los 2 retos planteados al final (para verificar si lo que uno estaba pensando era lo correcto o no).
  • Un vídeo que fuera al detalle de cómo desplegar django a producción.

No sé como serían los anteriores cursos de django, sin embargo éste no llenó mis expectativas, siento que se expusieron los conceptos de afán y no se presentaron todas las soluciones a los retos.
Creo que si es necesario , hacer más para dummies el inicio , así sea un curso básico ,uno mediano y finalmente el avanzado (que ya existe).
Para mí que entraba a este mundo por primera vez fué difícil cogerle el ritmo, a veces se tornaba aburridor y monótono, para ser un curso pago me faltó más pedagogía y mejor explicación en algunos conceptos.
Creo que todo se puede mejorar, pero por ahora tendré que seguir mirando y leyendo, tristemente no todo está muy claro.

Es bueno el curso pero realmente la parte de deployment quedó muy básico. Debería haber mucha más información, páginas disponibles o servicios no solo un poco de texto.

Conclusion… lee la documentacion, ahi esta todo.

Todo iba muy bien, pero al parecer se acabo el presupuesto justo en el deployment

He hecho los siguientes cambios en el proyecto por el momento:

  • Cambie todas las importaciones directas de User a usar get_user_model. Según la documentación de Django, no es recomendado hacer el import directamente del modelo.

  • Cree una señal para que el Profile se cree automáticamente cuando crees nuevo usuario.

  • Elimine el Middleware que obliga a poner imagen y URL. Aunque se que era necesario para explicar Middlewares, la verdad no le veo ningun uso en la vida real. Quizas despues encuentre un mejor uso mientras realizo el reto de agregar follow y like.

Les dejo mi repositorio por si desean ver los cambios que he hecho https://github.com/d4vsanchez/platzigram, los commits están descriptivos para que se puedan encontrar fácilmente los cambios.

Excelente el curso! cubrió muchísimo! se hizo largo pero fue genial!

Comparto lo que dicen mis compañeros. Fue uno de los mejores cursos de Django. Pero si pudieran subir la solución de los retos, seria estupendo, ya que tengo dudas:
La funcionalidad de seguir usuarios seria crear un campo donde sea una relacion de muchos a muchos con los usuarios seguidos o crear un nuevo modelo que almacene los ids del usuario seguidor como del seguido?

Realmente decepcionado.

El curso me pareció genial, pero por parte del profesor en un año en Platzi es de las peores experiencias, yo sé que todo está en la documentación, pero si nos suscribimos a Platzi esperamos algo que nos ayude a aprender de forma más eficaz que es uno de sus propios lemas de Platzi, este curso tiene sus pros y contras, pero tiene más contras, espero una actualización de este curso.

dejo aquí mi proyecto finalizado
https://instragram-clone.herokuapp.com

Buen día, estoy intentando desplegar la aplicación en google cloud, pero no me están cargando los archivos estáticos, me podrían ayudar?. envío el código por si alguno sabe cómo solucionarlo.

"""
Django settings for fleetingram project.

Generated by 'django-admin startproject' using Django 2.2.5.

For more information on this file, see
https://docs.djangoproject.com/en/2.2/topics/settings/

For the full list of settings and their values, see
https://docs.djangoproject.com/en/2.2/ref/settings/
"""

import os

# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))


# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/2.2/howto/deployment/checklist/

# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = '03u$15([email protected]%=_oehgygx%gw82zao+4a!f5(w=spco7j66s'

# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = False

ALLOWED_HOSTS = ['conexe.appspot.com']


# Application definition

INSTALLED_APPS = [
    # Django apps
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',

    # Local apps
    'posts',
    'users',
]

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',
    'fleetingram.middleware.ProfileCompletionMiddleware',
]

ROOT_URLCONF = 'fleetingram.urls'

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [
            os.path.join(BASE_DIR, '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 = 'fleetingram.wsgi.application'


# Database
# https://docs.djangoproject.com/en/2.2/ref/settings/#databases

if os.getenv('GAE_APPLICATION', None):
    # Running on production App Engine, so connect to Google Cloud SQL using
    # the unix socket at /cloudsql/<your-cloudsql-connection string>

    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'USER': 'crincon',
            'PASSWORD': 'Berseker00',
            'NAME': 'FLEETINGRAMCORE',
            'HOST': '/cloudsql/conexe:us-central1:fleetingramcore',
        }
    }
else:
    # Running locally so connect to either a local MySQL instance or connect to
    # Cloud SQL via the proxy. To start the proxy via command line:
    #
    #     $ cloud_sql_proxy -instances=[INSTANCE_CONNECTION_NAME]=tcp:3306
    #
    # See https://cloud.google.com/sql/docs/mysql-connect-proxy
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'HOST': '127.0.0.1',
            'PORT': '3306',
            'NAME': 'FLEETINGRAMCORE',
            'USER': 'crincon',
            'PASSWORD': 'Berseker00',
        }
    }


# Password validation
# https://docs.djangoproject.com/en/2.2/ref/settings/#auth-password-validators

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/2.2/topics/i18n/

LANGUAGE_CODE = 'en-us'

TIME_ZONE = 'UTC'

USE_I18N = True

USE_L10N = True

USE_TZ = True


# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/2.2/howto/static-files/

BUCKET_NAME = 'conexe.appspot.com'

STATIC_URL = os.path.join('https://storage.googleapis.com',BUCKET_NAME, '/static/')

STATIC_ROOT = os.path.join(BASE_DIR,'static')

"""STATICFILES_DIRS = (

    os.path.join(BASE_DIR, 'static'),
    STATIC_ROOT,

)
"""

STATICFILES_FINDERS = [

    'django.contrib.staticfiles.finders.FileSystemFinder',
    'django.contrib.staticfiles.finders.AppDirectoriesFinder',

]


MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'


LOGIN_URL = '/users/login/'
LOGIN_REDIRECT_URL = '/'
LOGOUT_REDIRECT_URL = LOGIN_URL

Respondiendo a la duda de pablo, algo que seria buenisimo para el curso es que se le agregue un video resolviendo los dos retos planteados al final. Maravilloso curso

Para que chequen que tal quedo Mi pagina

Este curso está muy bueno para el conocimiento de la forma en cómo gestionar el modelo template view con django. Desde vistas basadas en funciones hasta el uso de clases. Fue de mucho provecho los temas, aunque algunas explicaciones adicionales a algunas secciones ya para finalizar no estaría mal. Comparto la sensación de inconformidad respecto a videos que expliquen cómo hacer el deployment del proyecto. También me hubiese gustado que trataran más sobre el uso de gestores de base de datos como MySql o postgress. Acá tengo algunas dudas todavía. Aún así, gracias profe Pablo por su excelente curso.

Ando muy tilt con este curso, siento que no aprendí nada, esto fue más un paso a paso, hice toda la ruta previa de desarrollo backend con django para llegar a estos dos últimos cursos y encontrarme con este curso tan precario.

👍👍👍

El curso fue de mas a menos. Desde el modúlo de Class-based view Pablo explicaba las cosas de paso. Además, no poder ver los videos de como hacer el deployment fue muy triste. También, hubiera sido instructivo mostrar como configurar el entorno virtual en Mac, Windows (usando WSL2) y linux , explicado en diferentes videos. Es hora de actulizar el curso. Puntos positivos: Antes del curso no tenia idea de como funcionaba Django, este curso sento las bases. Muchas gracias

Ahora solo tengo que volver 15 años al pasado y habré creado Instagram.

El curso termino de manera abrupta

Hizo falta los videos del deploy, se cerro el curso de mala forma

Como guardo el estado de los me gusta en el fronted porque al refrescar la pagina se borran los likes almacenados en la base de datos.

He tomado algunos cursos online y en muchos he tenido que aumentar o disminuir la velocidad del video, pero este fue a la velocidad necesaria para explicar y absorber los conocimientos sobre Django!

Gracias por el curso, muy bueno!!!

Excelente el curso… se me ah presentado un problema cuando quiero actualziar a un user o cuando lo redirige a la hora de hacer loggin y ser nuevo no deja por que me manda este error…

AttributeError at /users/me/profile/
Generic detail view UpdateProfileView must be called with either an object pk or a slug in the URLconf.
Request Method:	GET
Request URL:	http://localhost:8000/users/me/profile/
Django Version:	2.1.2
Exception Type:	AttributeError
Exception Value:	
Generic detail view UpdateProfileView must be called with either an object pk or a slug in the URLconf.

No se si a alguien mas le ah pasado y que puede que tenga malo ?

falto una buena explicacion de como hacer deploy, ojala rehagan este curso ya que iba muy bien al inicio.

En conclusión se mostraron temas generales, faltó:
Video despliegue aplicación en producción.
Video despliegue aplicación en producción en otros sistemas como Windows, MacOS.
Solución a los retos, ya que Platzi es una plataforma de enseñanza y para los retos debe ser interactiva con el profesor.

Recomendación para el profesor:
Hacer un curso de docencia, ya que conoce bien la herramienta pero le falta mucho saber trasmitir el conocimiento.

Gracias.

Considero que este curso pese a ser largo, queda “corto” a nivel de explicación. Pues muchas cosas se explicaron por encima y dando como premisa “leamos la documentación” que claro, no está mal, pero si hubiera querido pagar para que me enseñen a leer una documentación, no estaría aquí.

Particularmente me queda en duda la interacción entre tablas de base de datos, eso de dar follow, me gusta a una foto, comentarla, nada de eso queda explicado de como el ORM nos ayudaría.

Django versión 2.0 para el curso y vamos por la 3.2 deberían actualizarlo.

Hiso falta el poder hacer unittest para automatizar pruebas de calidad 😦
Espero que el siguiente curso de “Django Avanzado” sea más completo.
Gracias profesor Pablo Trinidad.

me encantaría que se abordará aunque sea un poco de arquitectura de software (un poco una visión más general con un esquema quizás de como se jerarquizó el proyecto… al principio del curso hubiese sido de mucha utilidad)

También sería genial profundizar y grabar clases de deployment y recomendaciones de cursos que complementan bien este (ya sea del ámbito de devops o de base de datos por ejemplo)

Por lo demás muy buen curso, es muy motivante aprender cosas nuevas