Je voudrais voir le résultat de l'exécution de l'API en HTML.
Donc, j'ai d'abord exécuté l'API sur localhost et vérifié si le résultat pouvait être affiché en HTML dans le navigateur.
En conséquence, on m'a dit d'étudier Django
, donc je vais l'essayer pour le moment.
Django Jetons un bref coup d'œil à Django.
--ORM --Object Relational Mapping Excellente cartographie relationnelle d'objet.
Comme il s'agit de mon premier développement en utilisant Django
, je vais créer une liste de livres comme exemple d'application.
Le développement se déroulera selon le flux suivant.
Django
et créez un projet.L'environnement d'exécution est le suivant
$ sw_vers
ProductName: Mac OS X
ProductVersion: 10.15.1
BuildVersion: 19B88
$ python --version
Python 3.7.4
Utilisez venv
comme environnement de développement virtuel.
Je veux utiliser la version stable cette fois, alors spécifiez la version et installez-la.
$ pip install django==2.1.5
Créez ensuite un projet. Cette fois, créez un projet appelé mybook.
$ django-admin.py startproject mybook
Un projet est créé avec la configuration suivante.
mybook/
manage.py
mybook/
__init__.py
settings.py
urls.py
wsgi.py
Allez maintenant dans le répertoire mybook
.
$ cd mybook
Les paramètres de la base de données peuvent être définis dans mybook / settings.py
.
Cette fois, nous utiliserons le paramètre par défaut «SQlite3».
settings.py
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
:
# Database
# https://docs.djangoproject.com/en/1.9/ref/settings/#databases
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
Lorsque vous entrez la commande pour migrer la base de données, un fichier appelé db.sqlite3
est créé dans le répertoire directement sous le projet.
$ python manage.py migrate
En même temps, créez un super utilisateur.
$ python manage.py createsuperuser
Username (leave blank to use 'hoge'): admin
Email address: [email protected]
Password: hogefuga
Password (again): hogefuga
Superuser created successfully.
En chemin, répondez aux questions suivantes.
--Nom d'utilisateur: admin
Démarrez le serveur de développement avec la commande python manage.py runserver
et vérifiez si le projet fonctionne.
$ python manage.py runserver
Accédez à http://127.0.0.1:8000/ avec votre navigateur.
Pour terminer le serveur de développement, appuyez sur contrôle + c
.
Créez une application appelée cms
sous le projet.
Créez avec la commande suivante.
$ python manage.py startapp cms
Les fichiers suivants sont créés dans le répertoire du projet mybook.
mybook/
cms/
__init__.py
admin.py
apps.py
migrations/
__init__.py
models.py
tests.py
views.py
manage.py
mybook/
:
:
Définissez le modèle de données que vous souhaitez définir dans la base de données dans cms / models.py
.
models.py
from django.db import models
class Book(models.Model):
"""Livres"""
name = models.CharField('Titre de livre', max_length=255)
publisher = models.CharField('l'éditeur', max_length=255, blank=True)
page = models.IntegerField('nombre de pages', blank=True, default=0)
def __str__(self):
return self.name
Ajoutez cms
à la fin de INSTALLED_APPS dans mybook / settings.py
.
settings.py
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'cms', #ajouter à
]
Utilisez la commande suivante pour récupérer les modifications dans models.py
et créer un fichier de migration.
$ python manage.py sqlmigrate cms 0001
Utilisez la commande suivante pour refléter le fichier de migration qui n'a pas été reflété dans la base de données vers la base de données.
python manage.py migrate cms
À ce stade, la base de données est prête.
De là, nous allons créer avec Foron. Cette fois, nous utiliserons Bootstrap, un framework CSS. Téléchargez-le à partir de ce qui suit, y compris le jQuery requis par Bootstrap.
Créez un répertoire appelé mybook / cms / static / cms /
et placez le fichier téléchargé comme suit.
mybook
└── cms
└── static
└── cms
├── css
│ ├── bootstrap.min.css
│ └── bootstrap.min.css.map
└── js
├── bootstrap.bundle.min.js
├── bootstrap.bundle.min.js.map
└── jquery-3.4.1.min.js
Nous avons besoin d'une fonction de liste, alors créez-la dans cms / views.py
.
views.py
from django.shortcuts import render
from django.http import HttpResponse
def book_list(request):
"""Liste des livres"""
books = Book.objects.all().order_by('id')
return render(request,
'cms/book_list.html', #Modèle à utiliser
{'books': books}) #Données à transmettre au modèle
Créez ensuite un schéma d'URL.
Le fichier cms / urls.py
n'existe pas, alors créez-en un nouveau.
En cela, l'URL et la fonction de la vue sont liées.
cms/urls.py
from django.urls import path
from cms import views
app_name = 'cms'
urlpatterns = [
#Livres
path('book/', views.book_list, name='book_list'), #liste
]
Ensuite, incluez «cms / urls.py» dans «mybook / urls.py» pour l'ensemble du projet.
mybook/urls.py
from django.contrib import admin
from django.urls import path, include # ←,ajouter inclure
urlpatterns = [
path('cms/', include('cms.urls')), #← Ajouter ici
path('admin/', admin.site.urls),
]
L'URL finale ressemble à ceci:
http://127.0.0.1:8000/cms/book/
Créez un modèle appelé book_list.html
à utiliser dans l'application cms du projet mybook.
Tout d'abord, créez un modèle appelé base.html
qui sera la source d'héritage.
mybook/cms/templates/cms/base.html
Le contenu de «base.html» est le suivant.
base.html
{% load i18n static %}
<!DOCTYPE html>{% get_current_language as LANGUAGE_CODE %}
<html lang="{{ LANGUAGE_CODE|default:"en-us" }}">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<link rel="stylesheet" href="{% static 'cms/css/bootstrap.min.css' %}">
{% block extra_css %}{% endblock %}
<title>{% block title %}My books{% endblock %}</title>
</head>
<body>
<div class="container">
{% block content %}
{{ content }}
{% endblock %}
</div>
<script src="{% static 'cms/js/jquery-3.3.1.min.js' %}"></script>
<script src="{% static 'cms/js/bootstrap.bundle.min.js' %}"></script>
{% block extra_js %}{% endblock %}
</body>
</html>
Maintenant, créez mybook / cms / templates / cms / book_list.html
en héritant de ce base_html
.
book_list.html
{% extends "cms/base.html" %}
{% block title %}Liste des livres{% endblock title %}
{% block content %}
<h4 class="mt-4 border-bottom">Liste des livres</h4>
<table class="table table-striped table-bordered">
<thead>
<tr>
<th scope="col">ID</th>
<th scope="col">Titre de livre</th>
<th scope="col">l'éditeur</th>
<th scope="col">nombre de pages</th>
</tr>
</thead>
<tbody>
{% for book in books %}
<tr>
<th scope="row">{{ book.id }}</th>
<td>{{ book.name }}</td>
<td>{{ book.publisher }}</td>
<td>{{ book.page }}</td>
</tr>
{% endfor %}
</tbody>
</table>
{% endblock content %}
Vérifiez-le avec votre navigateur. Puisqu'il n'y a pas de données, seul l'en-tête.
http://127.0.0.1:8000/cms/book/
Pour le moment, j'ai pu afficher du HTML.
Après cela, si vous pouvez appeler et exécuter l'API à partir de views.py
, vous pouvez atteindre l'objectif.
Je suis nouveau dans le framework Python et j'ai pu le faire afficher sans trébucher.