[PYTHON] J'ai fait une webAPI! Construire un environnement à partir de Django Rest Framework 1 avec EC2

introduction

Dans cet article ** Créez une API Web avec Django! L'article est **.

J'utilise MySQL de RDS.

Ceci est une continuation de l'article précédent, veuillez donc vous y référer si vous ne comprenez pas. [AWS] J'ai essayé d'utiliser EC2, RDS, Django. Construction de l'environnement à partir de 1

$             <-Commandes sur votre terminal PC
[ec2-user] $  <-Commandes lorsque vous êtes connecté à EC2
MySQL >       <-Commandes lorsque vous êtes connecté à MySQL
#             <-Mon commentaire
>>>           <-Résultat d'exécution(Valeur de sortie)

Conditions préalables

Création de projet Django

Je l'ai écrit dans l'article précédent, mais je vais l'écrire à nouveau.

Créons un projet


#Créez un projet appelé testDjango
[ec2-user] $ django-admin startproject testDjango

[ec2-user] $ cd
[ec2-user] $ cd testDjango

#Créer une application nommée sondages
[ec2-user] $ python manage.py startapp polls

Reportez-vous à l'article précédent [2.2], [2.5]

** Modifier settings.py à l'aide de FileZilla **

testDjango/settings.py



#Lorsque vous recherchez une adresse IP sur Google, etc., le contenu de l'erreur sera renvoyé
DEBUG = True

#Changement
ALLOWED_HOSTS = ['(Adresse IP ouverte EC2)','localhost']

#Changement
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'rest_framework',
    'polls.apps.PollsConfig',
]
#(nom de l'application).apps.(先頭大文字nom de l'application)Config

...
(Abréviation)
...

#Remarque les paramètres par défaut
# DATABASES = {
#     'default': {
#         'ENGINE': 'django.db.backends.sqlite3',
#         'NAME': BASE_DIR / 'db.sqlite3',
#     }
# }

#Remplissez nouveau
#[NAME]Est le nom de la table dans RDS, qui sera créé ultérieurement.
#[USER,PASSWORD,HOST]Entrez chacun
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'dbtest',
        'USER': '(Utilisateur maître DB)',
        'PASSWORD': '(Mot de passe de l'utilisateur principal de la base de données)',
        'HOST': '(Point de terminaison de base de données)',
        'PORT': '3306',
    }
}

...
(Abréviation)
...

#Changer en japonais
#LANGUAGE_CODE = 'en-us'
LANGUAGE_CODE = 'ja'

#Passer à l'heure japonaise
# TIME_ZONE = 'UTC'
TIME_ZONE = 'Asia/Tokyo'

USE_I18N = True

USE_L10N = True

USE_TZ = True


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

STATIC_URL = '/static/'

** Connectez-vous à MySQL sur RDS **


[ec2-user] $ mysql -h (Point de terminaison de base de données) -u (Nom d'utilisateur du maître DB) -p
#Il vous sera demandé un mot de passe, alors entrez-le(Les caractères ne sont pas affichés mais saisis)(Le copier-coller est possible)

>>> Welcome to the MariaDB monitor.
#Est affiché, vous pouvez vous connecter à MySQL sur RDS.

#Afficher la liste dans la base de données(Peut être une base de données d'exposition en minuscules;)
MySQL > SHOW databases;

#Créez une table nommée "dbtest"
MySQL > CREATE DATABASE dbtest;

#Fin
MySQL > exit

Paramètres Django

Créer un modèle

polls/models.py



from django.db import models

class User(models.Model):
    #Heure de création de l'enregistrement
    created = models.DateTimeField(auto_now_add=True)
    #Enregistrer le nom de l'utilisateur
    name = models.CharField(max_length=100, blank=True, default='')
    #Email de l'utilisateur
    mail = models.TextField()

    class Meta:
        ordering = ('created',)

** Migrez la base de données **


[ec2-user] $ python manage.py makemigrations polls
[ec2-user] $ python manage.py migrate

je vais vérifier


MySQL > show databases;
MySQL > use dbtest;
MySQL > show tables;
>>>
+----------------------------+
| Tables_in_dbtest           |
+----------------------------+
| auth_group                 |
| auth_group_permissions     |
| auth_permission            |
| auth_user                  |
| auth_user_groups           |
| auth_user_user_permissions |
| django_admin_log           |
| django_content_type        |
| django_migrations          |
| django_session             |
| example_table              |
| polls_user                 | <--Ont été générés
+----------------------------+   (nom de l'application)_user

MySQL > exit

Les articles suivants seront utiles [Mémo d'apprentissage] À propos des migrations et des migrations

Créer serializers.py

Il n'est pas généré par défaut, alors créez-le avec le Bloc-notes ou quelque chose et transférez-le avec FileZilla

―― La sérialisation consiste à convertir les données traitées à l'intérieur du logiciel afin qu'elles puissent être enregistrées, envoyées et reçues telles quelles.

polls/serializers.py



from rest_framework import serializers
from polls.models import User


class UserSerializer(serializers.ModelSerializer):
    class Meta:
        model = User
        fields = ('id', 'name', 'mail')

Mettre en œuvre views.py

polls/views.py



from django.http import HttpResponse, JsonResponse
from django.views.decorators.csrf import csrf_exempt
from rest_framework.parsers import JSONParser
from polls.models import User
from polls.serializers import UserSerializer


@csrf_exempt
def user_list(request):
    
    if request.method == 'GET':
        #Obtenez tous les utilisateurs de MySQL
        polls = User.objects.all()
        serializer = UserSerializer(polls, many=True)
        #Retour avec Json
        return JsonResponse(serializer.data, safe=False)

    elif request.method == 'POST':
        data = JSONParser().parse(request)
        serializer = UserSerializer(data=data)
        if serializer.is_valid():
            serializer.save()
            #Les données Json seront renvoyées si l'inscription est réussie##La série status 200 a été traitée avec succès
            return JsonResponse(serializer.data, status=201)
        return JsonResponse(serializer.errors, status=400)

Créer des sondages / urls.py

Veuillez également en créer un nouveau

polls/urls.py



from django.urls import path
from polls import views

urlpatterns = [
    path('user/', views.user_list),
]

** Connectez-vous aux urls.py d'origine **

testDjango/urls.py



from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('polls.urls')),
]

Ceci termine les réglages.

Essai

Configurer un serveur local Qu'est-ce que local? L'article suivant était facile à comprendre pour ceux qui disent Qui dirige django? (Présentation du déploiement)


[ec2-user] $ cd
[ec2-user] $ cd testDjango

[ec2-user] $ python manage.py runserver

Après cela, sur Google Chrome, etc.


http://(Adresse IP ouverte EC2)/user/

Lorsque vous recherchez


[]

Je pense que les parenthèses vides sont renvoyées.

Entrer des données

Ce n'est pas pratique de garder ça Téléchargez l'extension ARC de Google Chrome

Téléchargement du client REST avancé

Lorsque j'essaye de communiquer avec GET, des parenthèses vides sont renvoyées

スクリーンショット 2020-10-21 14.01.45.png

J'essaierai de communiquer par POST. À ce moment-là


{"name":"tanaka","mail":"[email protected]"}

Ajoutez ces informations.

スクリーンショット 2020-10-21 14.07.27.png

Appuyez sur ENVOYER et vous obtiendrez une réponse

スクリーンショット 2020-10-21 14.10.35.png

Vous devez également vérifier si vous vous êtes correctement enregistré auprès de GET.

Aussi la base de données


MySQL > use dbtest;
MySQL > SELECT * FROM polls_user;
>>>
+----+----------------------------+--------+-------------+
| id | created                    | name   | mail        |
+----+----------------------------+--------+-------------+
|  1 | 2020-10-21 05:10:23.730602 | tanaka | [email protected] |
+----+----------------------------+--------+-------------+

L'enregistrement est maintenant réussi.

en conclusion

J'espère que cet article aide quelqu'un.

La prochaine fois, j'essaierai de créer un environnement de production (je suis débutant) en utilisant NginX, Gunicorn.

Eh bien

Site de référence

Ce qui suit et les sites auxquels j'ai beaucoup fait référence au milieu de cet article sont présentés. Merci beaucoup.

[1]. Tutoriel du framework Django REST, partie 1 [2]. Qui dirige django? (Présentation du déploiement) [3]. [Learning Memo] À propos des migrations et des migrations [4]. Commandes MySQL fréquemment utilisées

Recommended Posts

J'ai fait une webAPI! Construire un environnement à partir de Django Rest Framework 1 avec EC2
# 3 Créez un environnement Python (Django) avec une instance EC2 (ubuntu18.04) d'AWS part2
Construire un environnement Django sur Raspai (MySQL)
Créer un environnement de développement Django à l'aide de pyenv-virtualenv sur Mac
# 2 Créez un environnement Python avec une instance EC2 d'AWS (ubuntu18.04)
J'ai créé un environnement Python3 sur Ubuntu avec direnv.
Comment créer un environnement Django (python) sur Docker
[AWS] J'ai essayé d'utiliser EC2, RDS, Django. Construction de l'environnement à partir de 1
Créer un environnement python3 sur CentOS7
J'ai créé un environnement de développement pour Django 3.0 avec Docker, Docker-compose, Poetry
Construire un environnement python sur MacOS (Catallina)
Je veux créer un environnement Python
Créer un environnement Python + OpenCV sur Cloud9
J'ai fait une application WEB avec Django
Créez un environnement d'apprentissage pour le «Deep learning from scratch» avec Cloud9 (jupyter miniconda python3)
Créez un environnement LAMP sur votre Docker local
Créez un environnement WardPress sur AWS avec Pulumi
Créer un environnement python avec pyenv sur EC2 (ubuntu)
Ce que j'ai trouvé en déployant Django sur EC2
Créez simplement un environnement d'exécution Python 3 sous Windows
Créez un environnement python avec ansible sur centos6
Créer un environnement Python sur Mac (Mountain Lion)
[Python] Créer un environnement de développement Django avec Docker
Créez un environnement Django avec Vagrant en 5 minutes
Créez un environnement de développement Python sur votre Mac
J'ai créé un Bot LINE avec Serverless Framework!
Créer un environnement de développement Django à l'aide de Doker Toolbox
Framework Django REST Un peu utile à savoir.
Créer un environnement Kubernetes pour le développement sur Ubuntu
Créez rapidement un environnement Python Django avec IntelliJ
Créer un environnement d'exécution Python sur IBM i
Créer un environnement de développement TensorFlow sur Amazon EC2 avec une copie de commande
Construire un environnement de développement Python sur Raspberry Pi
[Django] Appuyez sur une commande que vous avez effectuée à partir du processus qui s'exécute sur manage.py.
Créer une application Todo avec Django REST Framework + Angular
Créer un environnement de développement Python basé sur GVim sur Windows 10 (3) GVim8.0 et Python3.6
Créer un environnement Python d'apprentissage automatique sur Mac OS
Essayez de créer une application Todo avec le framework Django REST
[Partie 2] Construisons un serveur Web avec EC2 Linux
Créer un environnement de développement Python basé sur GVim sur l'installation de Windows 10 (1)
Je souhaite créer facilement un environnement de développement basé sur un modèle
Créer un environnement de développement Python sur Mac OS X
Construire un environnement virtuel Python en utilisant venv (Django + MySQL ①)
[Go + Gin] J'ai essayé de créer un environnement Docker
Créer un environnement de développement Python à l'aide de pyenv sur MacOS
Déployer l'application Django créée avec PTVS sur Azure
Comment créer un environnement Python sur Amazon Linux 2
Construire un environnement Django pour Win10 (avec espace virtuel)
Windows10 (x64) Créer nativement un environnement d'apprentissage automatique
Bases du framework Django REST
Astuces Django Rest Framework
Quand j'ai essayé de créer un environnement Rails sur WSL2 (Ubuntu 20.04LTS), j'ai trébuché et suis tombé.
Créer un environnement d'étude d'apprentissage automatique Python avec macOS Sierra
Créer un environnement d'apprentissage automatique sur Mac (pyenv, deeplearning, opencv)
Créez un environnement de développement Django avec Docker! (Docker-compose / Django / postgreSQL / nginx)
Comment créer un nouvel environnement virtuel Python sur Ubuntu
[Memo] Construire un environnement de développement pour Django + Nuxt.js avec Docker
J'ai fait une boîte pour me reposer avant que Pepper ne se fatigue
J'ai fait une commande pour générer un commentaire pour une table dans Django