Redirigir todo el tráfico de una web a un nuevo dominio

Existen numerosas soluciones para redirigir todo el tráfico de una web hacia un nuevo dominio conservando el esquema de la url. Es decir, si tienes una web llamada ‘sitioA.com’ (con enlaces como sitioA.com/contacto, sitioA.com/post=324, etc) y quieres redirigir todas las direcciones … Continúa leyendo Redirigir todo el tráfico de una web a un nuevo dominio

Modificar plantilla de Administración en Django 1.11 + (1.8+)

El siguiente snippet pretende ilustrar de forma directa y sencilla cómo funciona el sistema de plantillas que Django incorpora desde la versión 1.8, aplicado a la sobre-escritura de la plantilla de administración. Para detalles técnicos está la fabula documentación de … Continúa leyendo Modificar plantilla de Administración en Django 1.11 + (1.8+)

Registro de usuario en Django Rest Framework

Mi solución de registro de usuarios a través de una API rest. No he encontrado ejemplos completos en ninguna parte, y este código bien pudiera no ser óptimo. [code language=»python»] #serializers.py class UserViewSet(viewsets.ModelViewSet): """ A viewset that provides the standard actions """ queryset = User.objects.all() serializer_class = UserSerializer permission_classes = (AllowAny, ) def create(self, request, *args, **kwargs): """ http POST 127.0.0.1:8000/users/ By default asks for permission. :param request: :return: """ serializer = UserSerializer(data=request.data) if serializer.is_valid(): user = serializer.create(validated_data=request.data) #serializer.save() return Response(serializer.data, status=status.HTTP_201_CREATED) else: return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) [/code] [code language=»python»] #views.py class UserSerializer(serializers.ModelSerializer): class Meta: """ Returns all the Avatars id … Continúa leyendo Registro de usuario en Django Rest Framework

Fecha de creación y edición automáticas en Django

En Django la fecha de creación y modificación no se añade por defecto a nuestros modelos, como sí ocurre en otros frameworks como Ruby On Rails. La forma más elegante de añadir esta funcionalidad a tus modelos es crear una clase base que herede de models.Model y luego hacer que todos tus modelos hereden de la misma. [code language=»python»] class BaseModel(models.Model): created_date = models.DateTimeField(_(‘Date created’), auto_now_add=True) modified_date = models.DateTimeField(_(‘Date modified’), auto_now=True) class Meta: abstract = True [/code] El resto de nuestros modelos donde queramos tener las fechas de creación y actualización automáticas deberán ser del tipo: [code language=»python»] class AccountType(BaseModel): name = … Continúa leyendo Fecha de creación y edición automáticas en Django

Obtener link de un ImageField en Django Rest Framework

ImageField difiere de FileField en cuanto a que el método .link no está disponible. Enviar vía DRF (Django Rest Framework) el link a una imagen no es un proceso «trivial». Mi implementación se basa en usar Serializer Method Field. El código que sigue creo que es bastante esclarecedor: serializers.py [code language=»python»] from rest_framework import serializers from .models import User, Avatar from django.conf import settings class AvatarSerializer(serializers.ModelSerializer): """ Returns all the avatars """ download_link = serializers.SerializerMethodField() class Meta: model = Avatar fields = (‘id’, ‘user’, ‘avatar’, ‘download_link’) # GET Must be in front def get_download_link(self, obj): return ‘%s/%s’ % (settings.MEDIA_ROOT , obj.avatar.name) [/code] models.py [code language=»python»] class Avatar(models.Model): … Continúa leyendo Obtener link de un ImageField en Django Rest Framework

Fecha por defecto en modelo Django 1.11

Existen dos formas de incluir una fecha por defecto en Django. La primera, que había estado empleando en versiones del framework anteriores sería la siguiente: [code language=»python»] import datetime date_of_birth = models.DateField(_(‘Date of Birth’), default=datetime.date.today()) [/code] Sin embargo la forma óptima de establecer esta fecha por defecto es empleando el módulo de Django timezone: [code language=»python»] from django.utils import timezone date_of_birth = models.DateField(_(‘Date of Birth’), default=timezone.now) [/code] El motivo tiene que ver con el sistema de zonas horarias que viene por defecto activado en Django. Si se emplea la primera opción, tu aplicación no operará de forma correcta cuando se trate de fechas en distintas partes del mundo … Continúa leyendo Fecha por defecto en modelo Django 1.11

Configuración rápida mysql Django para Ubuntu 16 / 14

Enlazar mysql con Django puede dar más de un quebradero de cabeza si no se sigue un orden secuencial de instalación de paquetes. En primer lugar, asegúrate de instalar un servidor de mysql en tu servidor o equipo de desarrollo. Instala tambén libmysqlclient-dev, necesario para conectar python con mysql. [code language=»bash»] sudo apt-get install mysql-server sudo apt-get install libmysqlclient-dev [/code] Ahora instala mediante pip o tu gestor de paquetes python la librería mysqlclient. [code language=»bash»] pip install mysqlclient [/code] A continuación entra en tu proyecto Django y abre el archivo settings.py. En la sección DATABASES, introduce el siguiente fragmento de código: [code language=»python»] DATABASES = … Continúa leyendo Configuración rápida mysql Django para Ubuntu 16 / 14

Crear un modelo de autenticación personalizado en Django

A modo de apunte dejo los pasos a seguir para crear un modelo de autenticación en Django 1.11. No voy a ahondar en ningún detalle ya que estos se pueden encontrar en: https://docs.djangoproject.com/en/1.11/ref/contrib/admin/ https://docs.djangoproject.com/en/1.9/topics/auth/customizing/#substituting-a-custom-user-model 1: Registra la app en la cuál vayas a especificar tu modelo de usuario dentro de settings.py. [code language=»python»] INSTALLED_APPS = [ ‘django.contrib.admin’, ‘django.contrib.auth’, ‘django.contrib.contenttypes’, ‘django.contrib.sessions’, ‘django.contrib.messages’, ‘django.contrib.staticfiles’, ‘tu_app’ ][/code] 2: En models.py de ‘tu_app’ añade lo siguiente: [code language=»python»] from django.db import models from django.contrib.auth.models import AbstractUser class User(AbstractUser): pass [/code] 3: De vuelta en settings.py añade la siguiente línea: [code language=»python»] AUTH_USER_MODEL = ‘tu_app.User’ [/code] (No importa en … Continúa leyendo Crear un modelo de autenticación personalizado en Django