Noviembre 21/2015
The framework for perfectionists with deadlines
Mi cliente es una aplicación móvil, la cual necesita lectura y almacenamiento de las tareas a través de una API REST.
# Cear el directorio del proyecto
mkdir django_todolist
cd django_todolist
# Instalar Django y Django REST framework
pip install django
pip install djangorestframework
# Crear un proyecto django
django-admin.py startproject django_todolist .
cd django_todolist
# Creare aplicaciones para api y para los todos
django-admin.py startapp todo
django-admin.py startapp api
class ApiTestCase(TestCase):
def setUp(self):
self.factory = RequestFactory()
self.client = Client()
def test_api_url(self):
response = self.client.get('/')
self.assertEqual(response.status_code, 200)
def test_todos_url(self):
response = self.client.get('/todos')
self.assertEqual(response.status_code, 200)
def test_post_todo(self):
todo_dict = {
'name': 'My Todo',
'description': 'My Todo Description',
}
response = self.client.post('/todos', todo_dict)
self.assertEqual(response.status_code, 201)
# Modificar el archivo todo/models.py
from django import models
class Todo(models.Model):
"""
Todo Model: name, description, created
"""
name = models.CharField(max_length=100)
description = models.TextField(default="")
checked = models.BooleanField(default=False)
created = models.DateTimeField(auto_now_add=True)
from rest_framework import serializers
from django_todolist.todo.models import Todo
# api/serializers
class TodoSerializer(serializers.ModelSerializer):
class Meta:
model = Todo
from rest_framework import viewsets
from django_todolist.todo.models import Todo
from django_todolist.api.serializers import TodoSerializer
class TodoViewSet(viewsets.ModelViewSet):
"""
API endpoint that allows to view or edit todos
"""
queryset = Todo.objects.all().order_by('-created')
serializer_class = TodoSerializer
from rest_framework import routers
from django.conf.urls import url, include
from django_todolist.api import views
router = routers.DefaultRouter(trailing_slash=False)
router.register(r'todos', views.TodoViewSet)
urlpatterns = [
url(r'^', include(router.urls)),
url(r'^api-auth/',
include('rest_framework.urls', namespace='rest_framework'))
]
INSTALLED_APPS = (
...
'rest_framework',
)
# Para el ejemplo no usaremos autenticación
#REST_FRAMEWORK = {
# 'DEFAULT_PERMISSION_CLASSES': ('rest_framework.permissions.IsAdminUser',),
# 'PAGE_SIZE': 10
#}
>>> python manage.py test
Creating test database for alias 'default'...
...............
----------------------------------------------------------------------
Ran 15 tests in 0.313s
OK
Destroying test database for alias 'default'...
#En la consola ejecuto:
#Crear tablas en la base de datos
python manage.py migrate
#Ejecutar servidor de desarrollo
python manage.py runserver
# Ready to go!
El código:
Write us:
jobs@swapps.co
@calidevco
@djangocali
@swappsco