[PYTHON] Essayez de créer une application Todo avec le framework Django REST

Créez une application TODO simple à l'aide du framework Django REST.

** Fonctionnalités de l'application à créer **

--Application de page unique qui gère la création / l'achèvement de TODO --Store TODO dans SQLite3 --Utiliser le framework Django REST --Créer une API RESTful

** Environnement / Version ** Windows 7 Python 3.4.3 Django 1.8.2 Django REST framework 3.1.2

** Livrables ** https://github.com/koji-ohki-1974/django-rest-todo

Préparation

On suppose que Python et Django sont déjà installés.

Présentation du framework Django REST

Exécutez la commande suivante pour installer le framework Django REST.

pip install djangorestframework

Créer un projet

Créez un projet Django. Exécutez la commande suivante dans n'importe quel dossier.

django-admin.py startproject django_rest_todo

Configuration de la base de données

Initialisez la base de données et créez un superutilisateur.

cd django_rest_todo
python manage.py migrate
python manage.py createsuperuser

Définissez l'ID de super utilisateur, l'adresse e-mail et le mot de passe.

article valeur
Username admin
Email address [email protected]
Password admin

Vérification du démarrage / fonctionnement du serveur

Exécutez la commande suivante.

python manage.py runserver

Démarrez votre navigateur et accédez à [http: // localhost: 8000 /](http: // localhost: 8000 /). Si le projet a été créé avec succès, l'écran «Cela a fonctionné!» S'affichera.

Quittez le serveur avec "CTRL + C".

Créer une application

Dans le dossier du projet, exécutez la commande suivante pour créer une application.

cd django_rest_todo
django-admin.py startapp api

Modifiez les paramètres du projet. Modifiez "settings.py" comme suit.

settings.py (extrait)


INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'rest_framework',
    'django_rest_todo.api',
)

MIDDLEWARE_CLASSES = (
#  'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
#  'django.middleware.csrf.CsrfViewMiddleware',
#  'django.contrib.auth.middleware.AuthenticationMiddleware',
#  'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
#  'django.contrib.messages.middleware.MessageMiddleware',
#  'django.middleware.clickjacking.XFrameOptionsMiddleware',
#  'django.middleware.security.SecurityMiddleware',
)

Créer une API

Modèle Todo

Définissez le modèle Todo. Modifiez "api / models.py" et ajoutez la classe Todo.

api/models.py


from django.db import models

class Todo(models.Model):
    text = models.TextField()

Lorsque la définition du modèle est terminée, elle sera reflétée dans la base de données. Exécutez la commande suivante.

cd ..
python manage.py makemigrations api
python manage.py sqlmigrate api 0001
python manage.py migrate

Créer un sérialiseur

Définit un sérialiseur qui mappe le modèle à JSON. Créez "api / serializers.py".

api/serializers.py


from .models import Todo
from rest_framework import serializers

class TodoSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = Todo
        fields = ('id', 'text')

Créer une vue

Créez une vue pour REST. Ajoutez la classe TodoViewSet à "api / views.py".

api/views.py


from rest_framework.viewsets import ModelViewSet
from .models import Todo
from .serializers import TodoSerializer

class TodoViewSet(ModelViewSet):
    queryset = Todo.objects.all()
    serializer_class = TodoSerializer

Routage API

Définissez le routage pour que l'API puisse être traitée. Modifiez "urls.py".

urls.py


from django.conf.urls import include, url
from rest_framework.routers import DefaultRouter
from .api import views

router = DefaultRouter()
router.register(r'todos', views.TodoViewSet)

urlpatterns = [
    url(r'^api/', include(router.urls)),
    url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework'))
]

Vérification du démarrage / fonctionnement du serveur

Redémarrez le serveur et vérifiez le fonctionnement de l'API. Exécutez la commande suivante.

python manage.py runserver

Lancez votre navigateur et accédez:

http://localhost:8000/api/ http://localhost:8000/api/todos/

Quittez le serveur avec "CTRL + C".

Créer un frontal

Fichier statique

Spécifie l'emplacement des fichiers statiques (.html et .js). Modifiez "settings.py" et ajoutez ce qui suit:

settings.py


STATICFILES_DIRS = (
    os.path.join(BASE_DIR, "static"),
)

Créez un dossier «statique».

mkdir static

Fichier HTML

Créez un écran de liste Todo. Créez "static / index.html".

static/index.html


<!doctype html>
<html ng-app="djangoTodo">
<head>
	<meta charset="utf-8">
	<meta name="viewport" content="width=device-width, initial-scale=1">

	<title>Django REST framework Todo App</title>

	<link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css">
	<style>
		html                    { overflow-y:scroll; }
		body                    { padding-top:50px; }
		#todo-list              { margin-bottom:30px; }
	</style>

	<script src="//ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
	<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.0.8/angular.min.js"></script>
	<script src="core.js"></script>

</head>
<body ng-controller="mainController">
	<div class="container">

		<div class="jumbotron text-center">
			<h1>Liste de choses à faire<span class="label label-info">{{ todos.length }}</span></h1>
		</div>

		<div id="todo-list" class="row">
			<div class="col-sm-4 col-sm-offset-4">

				<div class="checkbox" ng-repeat="todo in todos">
					<label>
						<input type="checkbox" ng-click="deleteTodo(todo.id)"> {{ todo.text }}
					</label>
				</div>

			</div>
		</div>

		<div id="todo-form" class="row">
			<div class="col-sm-8 col-sm-offset-2 text-center">
				<form>
					<div class="form-group">

						<input type="text" class="form-control input-lg text-center" placeholder="Veuillez entrer Todo" ng-model="formData.text">
					</div>

					<button type="submit" class="btn btn-primary btn-lg" ng-click="createTodo()">ajouter à</button>
				</form>
			</div>
		</div>

	</div>

</body>
</html>

Fichier JavaScript

Décrivez le processus d'appel de l'API en JavaScript. Créez "static / core.js".

static/core.js


var djangoTodo = angular.module('djangoTodo', []);

function mainController($scope, $http) {

    $scope.readTodos = function() {
        $http.get('/api/todos/')
            .success(function(data) {
                $scope.formData = {};
                $scope.todos = data;
                console.log(data);
            })
            .error(function(data) {
                console.log('Error: ' + data);
            });
    };

    $scope.createTodo = function() {
        $http.post('/api/todos/', $scope.formData)
            .success(function(data) {
                console.log(data);
                $scope.readTodos();
            })
            .error(function(data) {
                console.log('Error: ' + data);
            });
    };

    $scope.deleteTodo = function(id) {
        $http.delete('/api/todos/' + id + '/')
            .success(function(data) {
                console.log(data);
                $scope.readTodos();
            })
            .error(function(data) {
                console.log('Error: ' + data);
            });
    };

    $scope.readTodos();

}

réorienter

Défini pour rediriger la demande vers la première page "/" vers "static / index.html". Modifiez "urls.py".

urls.py


from django.conf.urls import include, url
from django.views.generic import RedirectView
from rest_framework.routers import DefaultRouter
from .api import views

router = DefaultRouter()
router.register(r'todos', views.TodoViewSet)

urlpatterns = [
    url(r'^api/', include(router.urls)),
    url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework')),
    url('', RedirectView.as_view(url='/static/index.html')),
]

Contrôle de fonctionnement

Vérification du démarrage / fonctionnement du serveur

Démarrez le serveur.

python manage.py runserver

Démarrez votre navigateur et accédez à [http: // localhost: 8000 /](http: // localhost: 8000 /). Lorsque la liste Todo s'affiche, vous avez terminé.

Recommended Posts

Essayez de créer une application Todo avec le framework Django REST
Créer une application Todo avec Django REST Framework + Angular
Créer une API REST pour faire fonctionner dynamodb avec le Framework Django REST
Créer une application Todo avec Django ③ Créer une page de liste de tâches
Créer une application Todo avec Django ⑤ Créer une fonction d'édition de tâches
Créer une application Todo avec Django ① Créer un environnement avec Docker
Créer une API RESTful avec Django Rest Framework
Créer une page d'accueil avec django
Créer une application Todo avec Django ④ Implémenter la fonction de création de dossier et de tâche
Framework Django REST avec Vue.js
Connectez-vous avec Django Rest Framework
[CRUD] [Django] Créer un site CRUD en utilisant le framework Python Django ~ 1 ~
Créer une API autour de l'authentification des utilisateurs avec Django REST Framework
[CRUD] [Django] Créer un site CRUD en utilisant le framework Python Django ~ 2 ~
[CRUD] [Django] Créer un site CRUD en utilisant le framework Python Django ~ 3 ~
[CRUD] [Django] Créer un site CRUD en utilisant le framework Python Django ~ 4 ~
[CRUD] [Django] Créer un site CRUD en utilisant le framework Python Django ~ 5 ~
[Django] Utiliser MessagePack avec le framework Django REST
Créer un téléchargeur de fichiers avec Django
Je souhaite créer une API qui retourne un modèle avec une relation récursive dans Django REST Framework
Comprendre la commodité de Django Rest Framework
Notes diverses sur le framework Django REST
Pratique de développement d'applications Web: Créez une page de création d'équipe avec Django! (Page de création de décalage)
Créer une application graphique avec Tkinter de Python
CRUD POST avec Nuxt & Django REST Framework
CRUD GET avec Nuxt & Django REST Framework ①
Créez une application Web simple avec Flask
Création de la première application avec Django startproject
Pratique de développement d'applications Web: Créez une page de création d'équipe avec Django! (Introduction)
CRUD PUT, DELETE avec Nuxt & Django REST Framework
Créez un tableau de bord pour les appareils réseau avec Django!
Framework Django REST Un peu utile à savoir.
Procédure de création d'application multi-plateforme avec kivy
Créez une application Hello World avec un seul fichier avec django
Liste de tâches simple créée avec Python + Django
Comment créer une API Rest dans Django
Jusqu'à ce que vous créiez une nouvelle application dans Django
Créez un outil de traduction avec Translate Toolkit
Implémentation de la fonction d'authentification dans Django REST Framework à l'aide de djoser
Créer un planning Django
Bases du framework Django REST
Astuces Django Rest Framework
Créer une liste Django Todo
Créons un système de réception simple avec le framework sans serveur Python Chalice et Twilio
Essayez de créer un site de gestion Todo en utilisant WebSocket avec Django (Swamp Dragon)
Créez une application graphique native avec Py2app et Tkinter
Comment créer un sous-menu avec le plug-in [Blender]
Lorsque vous souhaitez filtrer avec le framework Django REST
Créez une carte thermique de tweet avec l'API Google Maps
[Django Rest Framework] Personnalisez la fonction de filtre à l'aide de Django-Filter
Transition vers l'écran de mise à jour avec le Django a tag
Déployer l'application Django créée avec PTVS sur Azure
À moi-même en tant que débutant Django (1) -Création d'un projet / application-
À moi-même en tant que débutant Django (4) --Créer une application mémo-
Créer un environnement django avec docker-compose (MariaDB + Nginx + uWSGI)
Implémenter des URL hiérarchiques avec des routeurs imbriqués drf dans le framework Django REST
Pratique de développement d'applications Web: Créez une page de création d'équipe avec Django! (Ecrire un modèle de base)
Pratique de développement d'applications Web: Créez une page de création d'équipe avec Django! (Traitement d'authentification)
Pratique de développement d'applications Web: Créez une page de création d'équipe avec Django! (Expérience sur la page d'administration)
[Go language] Vous pouvez créer une application TUI avec Elm Architecture Créez une application ToDo légèrement riche avec bubbletea