In diesem Artikel ** Erstellen Sie eine Web-API mit Django! Der Artikel ist **.
Ich verwende MySQL von RDS.
Dies ist eine Fortsetzung des vorherigen Artikels. Wenn Sie dies nicht verstehen, lesen Sie bitte den Artikel. [AWS] Ich habe versucht, EC2, RDS, Django zu verwenden. Umgebungskonstruktion von 1
$ <-Befehle auf Ihrem PC-Terminal
[ec2-user] $ <-Befehle, während Sie bei EC2 angemeldet sind
MySQL > <-Befehle, während Sie bei MySQL angemeldet sind
# <-Mein Kommentar
>>> <-Ausführungsergebnis(Ausgabewert)
Ich habe es im vorherigen Artikel geschrieben, aber ich werde es wieder schreiben.
Lassen Sie uns ein Projekt erstellen
#Erstellen Sie ein Projekt namens testDjango
[ec2-user] $ django-admin startproject testDjango
[ec2-user] $ cd
[ec2-user] $ cd testDjango
#Erstellen Sie eine App mit dem Namen "Umfragen"
[ec2-user] $ python manage.py startapp polls
Siehe vorherigen Artikel [2.2], [2.5]
** Bearbeiten Sie settings.py mit FileZilla **
testDjango/settings.py
#Wenn Sie bei Google usw. nach einer IP-Adresse suchen, wird der Fehlerinhalt zurückgegeben
DEBUG = True
#Veränderung
ALLOWED_HOSTS = ['(EC2 offene IP-Adresse)','localhost']
#Veränderung
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',
]
#(App Name).apps.(先頭大文字App Name)Config
...
(Abkürzung)
...
#Bemerkung Standardeinstellungen
# DATABASES = {
# 'default': {
# 'ENGINE': 'django.db.backends.sqlite3',
# 'NAME': BASE_DIR / 'db.sqlite3',
# }
# }
#Füllen Sie neu aus
#[NAME]Ist der Tabellenname in RDS, der später erstellt wird.
#[USER,PASSWORD,HOST]Geben Sie jeweils ein
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'dbtest',
'USER': '(DB-Hauptbenutzer)',
'PASSWORD': '(DB-Hauptbenutzerkennwort)',
'HOST': '(DB-Endpunkt)',
'PORT': '3306',
}
}
...
(Abkürzung)
...
#Wechseln Sie zu Japanisch
#LANGUAGE_CODE = 'en-us'
LANGUAGE_CODE = 'ja'
#Wechseln Sie zur japanischen Zeit
# 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/'
** Melden Sie sich bei MySQL auf RDS an **
[ec2-user] $ mysql -h (DB-Endpunkt) -u (DB-Master-Benutzername) -p
#Sie werden nach einem Passwort gefragt, geben Sie es also ein(Zeichen werden nicht angezeigt, sondern eingegeben)(Kopieren und Einfügen ist möglich)
>>> Welcome to the MariaDB monitor.
#Wird angezeigt, können Sie über RDS eine Verbindung zu MySQL herstellen.
#Zeigen Sie die Liste in der Datenbank an(Kann Kleinbuchstaben anzeigen Datenbank sein;)
MySQL > SHOW databases;
#Erstellen Sie eine Tabelle mit dem Namen "dbtest".
MySQL > CREATE DATABASE dbtest;
#Ende
MySQL > exit
Modell erstellen
polls/models.py
from django.db import models
class User(models.Model):
#Erstellungszeit aufzeichnen
created = models.DateTimeField(auto_now_add=True)
#Notieren Sie den Namen des Benutzers
name = models.CharField(max_length=100, blank=True, default='')
#E-Mail des Benutzers
mail = models.TextField()
class Meta:
ordering = ('created',)
** Migrieren Sie die Datenbank **
[ec2-user] $ python manage.py makemigrations polls
[ec2-user] $ python manage.py migrate
ich werde es prüfen
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 | <--Wurden generiert
+----------------------------+ (App Name)_user
MySQL > exit
Die folgenden Artikel sind hilfreich [Lernnotiz] Über Migrationen durchführen und migrieren
Es wird nicht standardmäßig generiert. Erstellen Sie es daher mit Notepad oder Ähnlichem und übertragen Sie es mit FileZilla
――Serialisierung besteht darin, die in der Software verarbeiteten Daten so zu konvertieren, dass sie unverändert gespeichert, gesendet und empfangen werden können.
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':
#Holen Sie sich alle Benutzer von MySQL
polls = User.objects.all()
serializer = UserSerializer(polls, many=True)
#Kehre mit Json zurück
return JsonResponse(serializer.data, safe=False)
elif request.method == 'POST':
data = JSONParser().parse(request)
serializer = UserSerializer(data=data)
if serializer.is_valid():
serializer.save()
#Json-Daten werden zurückgegeben, wenn die Registrierung erfolgreich war##Die Serie Status 200 wurde erfolgreich verarbeitet
return JsonResponse(serializer.data, status=201)
return JsonResponse(serializer.errors, status=400)
Bitte erstellen Sie auch eine neue
polls/urls.py
from django.urls import path
from polls import views
urlpatterns = [
path('user/', views.user_list),
]
** Stellen Sie eine Verbindung zu den ursprünglichen URLs her.
testDjango/urls.py
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('polls.urls')),
]
Damit sind die Einstellungen abgeschlossen.
Richten Sie einen lokalen Server ein Was ist lokal? Der folgende Artikel war für diejenigen, die sagen, leicht zu verstehen Wer betreibt Django? (Übersicht für die Bereitstellung)
[ec2-user] $ cd
[ec2-user] $ cd testDjango
[ec2-user] $ python manage.py runserver
Danach auf Google Chrome etc.
http://(EC2 offene IP-Adresse)/user/
Wenn Sie suchen
[]
Ich denke, dass eine leere Klammer zurückgegeben wird.
Es ist unpraktisch, dies beizubehalten Laden Sie die Google Chrome-Erweiterung ARC herunter
Erweiterter REST-Client-Download
Wenn ich versuche, mit GET zu kommunizieren, werden leere Klammern zurückgegeben
Ich werde versuchen, per Post zu kommunizieren. Zu jener Zeit
{"name":"tanaka","mail":"[email protected]"}
Fügen Sie diese Informationen hinzu.
Drücken Sie SENDEN und Sie erhalten eine Antwort
Sie sollten auch überprüfen, ob Sie sich ordnungsgemäß bei GET registriert haben.
Auch die Datenbank
MySQL > use dbtest;
MySQL > SELECT * FROM polls_user;
>>>
+----+----------------------------+--------+-------------+
| id | created | name | mail |
+----+----------------------------+--------+-------------+
| 1 | 2020-10-21 05:10:23.730602 | tanaka | [email protected] |
+----+----------------------------+--------+-------------+
Die Registrierung ist jetzt erfolgreich.
Ich hoffe dieser Artikel hilft jemandem.
Das nächste Mal werde ich versuchen, mit NginX, Gunicorn, eine Produktionsumgebung (ich bin ein Anfänger) zu erstellen.
Na dann
Das Folgende und die Seiten, auf die ich in der Mitte dieses Artikels sehr viel verwiesen habe, werden vorgestellt. Vielen Dank.
[1]. Django REST Framework Tutorial Teil 1 [2]. Wer betreibt Django? (Übersicht für die Bereitstellung) [3]. [Lernnotiz] Über Migrationen durchführen und migrieren [4]. Häufig verwendete MySQL-Befehle
Recommended Posts