[PYTHON] Lassen Sie uns eine Todo-App mit dem Django REST-Framework erstellen

Erstellen Sie eine einfache TODO-App mit dem Django REST-Framework.

** Funktionen der zu erstellenden App **

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

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

Vorbereitung

Es wird davon ausgegangen, dass Python und Django bereits installiert sind.

Einführung in das Django REST-Framework

Führen Sie den folgenden Befehl aus, um das Django REST-Framework zu installieren.

pip install djangorestframework

Ein Projekt erstellen

Erstellen Sie ein Django-Projekt. Führen Sie den folgenden Befehl in einem beliebigen Ordner aus.

django-admin.py startproject django_rest_todo

Datenbankeinrichtung

Initialisieren Sie die Datenbank und erstellen Sie einen Superuser.

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

Legen Sie die Superuser-ID, die E-Mail-Adresse und das Kennwort fest.

Artikel Wert
Username admin
Email address [email protected]
Password admin

Serverstart / Betriebsprüfung

Führen Sie den folgenden Befehl aus.

python manage.py runserver

Starten Sie Ihren Browser und greifen Sie auf [http: // localhost: 8000 /](http: // localhost: 8000 /) zu. Wenn das Projekt erfolgreich erstellt wurde, wird der Bildschirm "Es hat funktioniert!" Angezeigt.

Beenden Sie den Server mit "STRG + C".

Eine Anwendung erstellen

Führen Sie im Projektordner den folgenden Befehl aus, um eine Anwendung zu erstellen.

cd django_rest_todo
django-admin.py startapp api

Ändern Sie die Projekteinstellungen. Ändern Sie "settings.py" wie folgt.

settings.py (Auszug)


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',
)

API erstellen

Todo Modell

Definieren Sie das Todo-Modell. Bearbeiten Sie "api / models.py" und fügen Sie die Todo-Klasse hinzu.

api/models.py


from django.db import models

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

Wenn die Modelldefinition vollständig ist, wird sie in der Datenbank angezeigt. Führen Sie den folgenden Befehl aus.

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

Erstellen eines Serializers

Definiert einen Serializer, der das Modell JSON zuordnet. Erstellen Sie "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')

Ansicht erstellen

Erstellen Sie eine Ansicht für REST. Fügen Sie die TodoViewSet-Klasse zu "api / views.py" hinzu.

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

API-Routing

Stellen Sie das Routing so ein, dass die API verarbeitet werden kann. Ändern Sie "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'))
]

Serverstart / Betriebsprüfung

Starten Sie den Server erneut und überprüfen Sie den Betrieb der API. Führen Sie den folgenden Befehl aus.

python manage.py runserver

Starten Sie Ihren Browser und greifen Sie zu:

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

Beenden Sie den Server mit "STRG + C".

Frontend erstellen

Statische Datei

Gibt den Speicherort statischer Dateien (.html und .js) an. Bearbeiten Sie "settings.py" und fügen Sie Folgendes hinzu:

settings.py


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

Erstellen Sie einen "statischen" Ordner.

mkdir static

HTML-Datei

Erstellen Sie einen Todo-Listenbildschirm. Erstellen Sie "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>Aufgabenliste<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="Bitte geben Sie Todo ein" ng-model="formData.text">
					</div>

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

	</div>

</body>
</html>

JavaScript-Datei

Beschreiben des Aufrufs der API in JavaScript. Erstellen Sie "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();

}

umleiten

Legen Sie fest, dass die Anforderung auf die oberste Seite "/" zu "static / index.html" umgeleitet wird. Ändern Sie "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')),
]

Funktionsprüfung

Serverstart / Betriebsprüfung

Starten Sie den Server.

python manage.py runserver

Starten Sie Ihren Browser und greifen Sie auf [http: // localhost: 8000 /](http: // localhost: 8000 /) zu. Wenn die Todo-Liste angezeigt wird, sind Sie fertig.

Recommended Posts

Lassen Sie uns eine Todo-App mit dem Django REST-Framework erstellen
Erstellen Sie eine Todo-App mit Django REST Framework + Angular
Erstellen Sie eine REST-API, um dynamodb mit dem Django REST Framework zu betreiben
Todo-App mit Django erstellen ③ Aufgabenlistenseite erstellen
Todo-App mit Django erstellen ⑤ Funktion zum Bearbeiten von Aufgaben erstellen
Erstellen einer Todo-App mit Django ① Erstellen Sie eine Umgebung mit Docker
Erstellen Sie eine RESTful-API mit dem Django Rest Framework
Erstellen Sie eine Homepage mit Django
Todo-App mit Django erstellen ④ Ordner- und Aufgabenerstellungsfunktion implementieren
Django REST Framework mit Vue.js
Melden Sie sich mit dem Django Rest Framework an
[CRUD] [Django] Erstellen Sie eine CRUD-Site mit dem Python-Framework Django ~ 1 ~
Erstellen Sie eine API für die Benutzerauthentifizierung mit Django REST Framework
[CRUD] [Django] Erstellen Sie eine CRUD-Site mit dem Python-Framework Django ~ 2 ~
[CRUD] [Django] Erstellen Sie eine CRUD-Site mit dem Python-Framework Django ~ 3 ~
[CRUD] [Django] Erstellen Sie eine CRUD-Site mit dem Python-Framework Django ~ 4 ~
[CRUD] [Django] Erstellen Sie eine CRUD-Site mit dem Python-Framework Django ~ 5 ~
[Django] Verwenden Sie MessagePack mit dem Django REST-Framework
Erstellen Sie mit Django einen Datei-Uploader
Ich möchte eine API erstellen, die ein Modell mit einer rekursiven Beziehung im Django REST Framework zurückgibt
Verstehen Sie den Komfort des Django Rest Framework
Verschiedene Hinweise zum Django REST-Framework
Entwicklungspraxis für Webanwendungen: Erstellen Sie mit Django eine Seite zum Erstellen von Schichten! (Schichterstellungsseite)
Erstellen Sie eine GUI-App mit Tkinter of Python
CRUD POST mit Nuxt & Django REST Framework
CRUD GET mit Nuxt & Django REST Framework ①
Erstellen Sie eine einfache Web-App mit Flasche
Erstellen der ersten App mit Django Startprojekt
Entwicklungspraxis für Webanwendungen: Erstellen Sie mit Django eine Seite zum Erstellen von Schichten! (Einführung)
CRUD PUT, DELETE mit Nuxt & Django REST Framework
Erstellen Sie mit Django ein Dashboard für Netzwerkgeräte!
Django REST Framework Ein wenig nützlich zu wissen.
Verfahren zur Erstellung plattformübergreifender Apps mit kivy
Erstellen Sie mit Django eine Hallo-Welt-Anwendung mit nur einer Datei
Einfache Aufgabenliste, erstellt mit Python + Django
So erstellen Sie eine Rest-API in Django
Bis Sie eine neue App in Django erstellen
Erstellen Sie ein Übersetzungswerkzeug mit dem Translate Toolkit
Implementierung der Authentifizierungsfunktion in Django REST Framework mit djoser
Erstellen Sie einen Django-Zeitplan
Grundlagen des Django REST-Frameworks
Tipps zum Django Rest Framework
Django Todo Listenerstellung
Erstellen wir ein einfaches Empfangssystem mit dem serverlosen Python-Framework Chalice und Twilio
Versuchen Sie, mit WebSocket mit Django (Swamp Dragon) eine Todo-Verwaltungssite zu erstellen.
Erstellen Sie mit Py2app und Tkinter eine native GUI-App
So erstellen Sie ein Untermenü mit dem Plug-In [Blender]
Wenn Sie mit dem Django REST-Framework filtern möchten
Erstellen Sie eine Tweet-Heatmap mit der Google Maps-API
[Django Rest Framework] Passen Sie die Filterfunktion mit Django-Filter an
Übergang zum Update-Bildschirm mit dem Django-Tag
Stellen Sie die mit PTVS erstellte Django-App in Azure bereit
Für mich als Django-Anfänger (1) -Erstellen eines Projekts / einer App-
Für mich als Django-Anfänger (4) - Erstellen Sie eine Memo-App-
Erstellen Sie eine Django-Umgebung mit Docker-Compose (MariaDB + Nginx + uWSGI).
Implementieren Sie hierarchische URLs mit drf-verschachtelten Routern im Django REST-Framework
Entwicklungspraxis für Webanwendungen: Erstellen Sie mit Django eine Seite zum Erstellen von Schichten! (Schreiben Sie eine Basisvorlage)
Entwicklungspraxis für Webanwendungen: Erstellen Sie mit Django eine Seite zum Erstellen von Schichten! (Authentifizierungsverarbeitung)
Entwicklungspraxis für Webanwendungen: Erstellen Sie mit Django eine Seite zum Erstellen von Schichten! (Experiment auf der Admin-Seite)
[Go language] Erstellen Sie eine TUI-App mit Elm Architecture. Erstellen Sie eine leicht reichhaltige ToDo-App mit bubbletea