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)
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
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
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')
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)
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.
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.
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
J'essaierai de communiquer par POST. À ce moment-là
{"name":"tanaka","mail":"[email protected]"}
Ajoutez ces informations.
Appuyez sur ENVOYER et vous obtiendrez une réponse
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.
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
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