(Python) Essayez de développer une application Web en utilisant Django

introduction

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.

Flux de développement

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.

  1. Installez Django et créez un projet.
  2. Configurez la base de données.
  3. Démarrez le serveur de développement.
  4. Créez une application.
  5. Installez Bootstrap.
  6. Créez des vues et des schémas d'URL.
  7. Créez du HTML.

environnement

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.

1. Installez Django et créez un projet

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

2. Configurez la base de données

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

3. Démarrez le serveur de développement

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. スクリーンショット 2019-12-29 20.04.26.png Pour terminer le serveur de développement, appuyez sur contrôle + c.

4. Créez une application

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.

5. Présentez Bootstrap

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

6. Créer des vues et un schéma d'URL

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/

7. Créer du HTML

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/
スクリーンショット 2019-12-29 21.01.09.png

À la fin

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.

Recommended Posts

(Python) Essayez de développer une application Web en utilisant Django
Étapes pour développer une application Web en Python
Essayez d'utiliser le framework web de Python Django (1) - De l'installation au démarrage du serveur
Je souhaite créer une application Web en utilisant React et Python flask
Développement d'une application WEB avec Django [Django startup]
Développement d'une application WEB avec Django [Ajout d'application]
Créer une application Web avec Django
Créer une application Web avec Flask ①
Créer une application Web avec Flask ③
Créer une application Web avec Flask ④
Développement d'une application WEB avec Django [Définition de modèle]
Développement d'une application WEB avec Django [Paramètre initial]
Essayez d'utiliser le framework d'application Web Flask
Développement d'une application WEB avec Django [Traitement des requêtes]
Essayez d'utiliser Excel en utilisant Python (Xlwings)
Développement d'une application WEB avec Django [modèle supplémentaire]
[Python] Une application web rapide avec Bottle!
J'ai essayé de créer une application todo en utilisant une bouteille avec python
Exécutez une application Web Python avec Docker
J'ai fait une application WEB avec Django
J'ai créé une application Web en Python qui convertit Markdown en HTML
[Python] [Word] [python-docx] Essayez de créer un modèle de phrase de mot en Python en utilisant python-docx
Comment créer une application à partir du cloud à l'aide du framework Web Django
Implémentez une application simple avec Python full scratch sans utiliser de framework web.
Calculons en fait le problème statistique avec Python
Essayez d'utiliser django-import-export pour ajouter des données csv à django
Comment ouvrir un navigateur Web à partir de python
Procédure pour utiliser l'API WEB de TeamGant (en utilisant python)
Comment développer une application de panier avec Django
Développement d'une application WEB avec Django [Création de l'écran d'administration]
Essayez de dessiner une courbe de vie avec python
Essayez de créer un code de "décryptage" en Python
Essayez d'utiliser le framework Web Python Tornado Partie 1
Créer une carte Web en utilisant Python et GDAL
Essayez de créer un groupe de dièdre avec Python
Exécutez des fichiers Python à partir de HTML en utilisant Django
Essayez d'utiliser le framework Web Python Tornado Partie 2
Essayez Debian + Python 3.4 + django1.7 ……
Essayez d'utiliser Django templates.html
Application Web utilisant Bottle (1)
Essayez d'utiliser Tweepy [Python2.7]
Les débutants ont essayé de créer une application Web native pour le cloud à l'aide de Datastore / GAE
Essayez d'obtenir une page Web et un fichier JSON en utilisant la bibliothèque Requests de Python
Si vous souhaitez créer une application TODO (distribuée) maintenant en utilisant uniquement Python
Essayez de créer un site de gestion Todo en utilisant WebSocket avec Django (Swamp Dragon)
WEB grattage avec python et essayez de créer un nuage de mots à partir des critiques
Essayez de créer une application Web avec Vue.js et Django (édition Mac) - (1) Construction d'environnement, création d'application
Déployer des applications Web Python 3.6 / Django / Postgres sur Azure
Essayez de créer un module Python en langage C
Comment configurer un environnement Python à l'aide de pyenv
Essayez de créer un fichier compressé en utilisant Python et zlib
Faisons un outil de veille de commande avec python
[Débutant] [Python / Django] Un ingénieur Web débutant a essayé un didacticiel Django - Partie 1-
[CRUD] [Django] Créer un site CRUD en utilisant le framework Python Django ~ 1 ~
Comment déployer une application Django dans le cloud Alibaba
[Débutant] [Python / Django] Un ingénieur Web débutant a essayé un didacticiel Django - Partie 2
[Débutant] [Python / Django] Un ingénieur web débutant a essayé un didacticiel Django - Partie 0-
[Débutant] [Python / Django] Un ingénieur Web débutant a essayé un tutoriel Django - Partie 5