(Python) Versuchen Sie, eine Webanwendung mit Django zu entwickeln

Einführung

Ich möchte das Ausführungsergebnis der API in HTML sehen. Also habe ich zuerst die API auf localhost ausgeführt und überprüft, ob das Ergebnis im Browser in HTML angezeigt werden kann. Infolgedessen wurde mir gesagt, ich solle "Django" lernen, also werde ich es vorerst versuchen.

Django Werfen wir einen kurzen Blick auf Django.

--ORM --Object Relational Mapping Ausgezeichnetes relationales Objekt-Mapping.

Entwicklungsfluss

Da dies meine erste Entwicklung mit Django ist, werde ich eine Buchliste als Beispielanwendung erstellen. Die Entwicklung wird gemäß dem folgenden Ablauf fortgesetzt.

  1. Installieren Sie Django und erstellen Sie ein Projekt.
  2. Richten Sie die Datenbank ein.
  3. Starten Sie den Entwicklungsserver.
  4. Erstellen Sie eine Anwendung.
  5. Installieren Sie Bootstrap.
  6. Erstellen Sie Ansichten und URL-Schemata.
  7. Erstellen Sie HTML.

Umgebung

Die Ausführungsumgebung ist wie folgt

$ sw_vers
ProductName:    Mac OS X
ProductVersion: 10.15.1
BuildVersion:   19B88

$ python --version
Python 3.7.4

Verwenden Sie "venv" als virtuelle Entwicklungsumgebung.

1. Installieren Sie Django und erstellen Sie ein Projekt

Ich möchte dieses Mal die stabile Version verwenden, also geben Sie die Version an und installieren Sie sie.

$ pip install django==2.1.5

Dann erstellen Sie ein Projekt. Erstellen Sie dieses Mal ein Projekt namens mybook.

$ django-admin.py startproject mybook

Ein Projekt wird mit der folgenden Konfiguration erstellt.

mybook/
    manage.py
    mybook/
        __init__.py
        settings.py
        urls.py
        wsgi.py

Wechseln Sie nun in das Verzeichnis "mybook".

$ cd mybook

2. Richten Sie die Datenbank ein

Datenbankeinstellungen können in mybook / settings.py vorgenommen werden. Dieses Mal verwenden wir die Standardeinstellung "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'),
    }
}

Wenn Sie den Befehl zum Migrieren der Datenbank eingeben, wird eine Datei mit dem Namen "db.sqlite3" im Verzeichnis direkt unter dem Projekt erstellt.

$ python manage.py migrate

Erstellen Sie gleichzeitig einen Superuser.

$ python manage.py createsuperuser
Username (leave blank to use 'hoge'): admin
Email address: [email protected]
Password: hogefuga
Password (again): hogefuga
Superuser created successfully.

Beantworten Sie unterwegs die folgenden Fragen.

3. Starten Sie den Entwicklungsserver

Starten Sie den Entwicklungsserver mit dem Befehl "python manage.py runserver" und prüfen Sie, ob das Projekt funktioniert.

$ python manage.py runserver

Gehen Sie mit Ihrem Browser zu http://127.0.0.1:8000/. スクリーンショット 2019-12-29 20.04.26.png Um den Entwicklungsserver zu beenden, drücken Sie "Strg + C".

4. Erstellen Sie eine Anwendung

Erstellen Sie unter dem Projekt eine Anwendung namens "cms". Erstellen Sie mit dem folgenden Befehl.

$ python manage.py startapp cms

Die folgenden Dateien werden im Verzeichnis des mybook-Projekts erstellt.

mybook/
    cms/
        __init__.py
        admin.py
        apps.py
        migrations/
            __init__.py
        models.py
        tests.py
        views.py
    manage.py
    mybook/
       :
       :

Definieren Sie das Datenmodell, das Sie in der Datenbank definieren möchten, in cms / models.py.

models.py


from django.db import models


class Book(models.Model):
    """Bücher"""
    name = models.CharField('Buchtitel', max_length=255)
    publisher = models.CharField('der Herausgeber', max_length=255, blank=True)
    page = models.IntegerField('Seitenzahl', blank=True, default=0)

    def __str__(self):
        return self.name

Fügen Sie cms am Ende von INSTALLED_APPS in mybook / settings.py hinzu.

settings.py


INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'cms',  #hinzufügen

]

Verwenden Sie den folgenden Befehl, um die Änderungen in models.py zu übernehmen und eine Migrationsdatei zu erstellen.

$ python manage.py sqlmigrate cms 0001

Verwenden Sie den folgenden Befehl, um die Migrationsdatei, die nicht in der Datenbank enthalten ist, in die Datenbank wiederzugeben.

python manage.py migrate cms

Zu diesem Zeitpunkt ist die Datenbank bereit.

5. Führen Sie Bootstrap ein

Von hier aus werden wir mit Foron erstellen. Dieses Mal werden wir Bootstrap verwenden, ein CSS-Framework. Laden Sie es von den folgenden Versionen herunter, einschließlich der für Bootstrap erforderlichen jQuery.

Erstellen Sie ein Verzeichnis mit dem Namen "mybook / cms / static / cms /" und platzieren Sie die heruntergeladene Datei wie folgt.

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. Erstellen Sie Ansichten und URL-Schema

Wir brauchen eine Listenfunktion, also erstelle sie in cms / views.py.

views.py


from django.shortcuts import render
from django.http import HttpResponse


def book_list(request):
    """Liste der Bücher"""
    books = Book.objects.all().order_by('id')
    return render(request,
                  'cms/book_list.html',     #Vorlage zu verwenden
                  {'books': books})         #Daten, die an die Vorlage übergeben werden sollen

Erstellen Sie dann ein URL-Schema. Die Datei cms / urls.py existiert nicht, erstellen Sie also eine neue. Dabei werden die URL und die Funktion der Ansicht verknüpft.

cms/urls.py


from django.urls import path
from cms import views

app_name = 'cms'
urlpatterns = [
    #Bücher
    path('book/', views.book_list, name='book_list'),   #Aufführen
]

Fügen Sie dann "cms / urls.py" für das gesamte Projekt in "mybook / urls.py" ein.

mybook/urls.py


from django.contrib import admin
from django.urls import path, include   # ←,add include

urlpatterns = [
    path('cms/', include('cms.urls')),   #← Hier hinzufügen
    path('admin/', admin.site.urls),
]

Die endgültige URL sieht folgendermaßen aus:

http://127.0.0.1:8000/cms/book/

7. Erstellen Sie HTML

Erstellen Sie eine Vorlage mit dem Namen "book_list.html" zur Verwendung in der cms-Anwendung des mybook-Projekts. Erstellen Sie zunächst eine Vorlage mit dem Namen "base.html", die die Vererbungsquelle darstellt.

mybook/cms/templates/cms/base.html

Der Inhalt von base.html ist wie folgt.

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>

Erstellen Sie nun "mybook / cms / templates / cms / book_list.html", indem Sie dieses "base_html" erben.

book_list.html


{% extends "cms/base.html" %}

{% block title %}Liste der Bücher{% endblock title %}

{% block content %}
    <h4 class="mt-4 border-bottom">Liste der Bücher</h4>
    <table class="table table-striped table-bordered">
      <thead>
        <tr>
          <th scope="col">ID</th>
          <th scope="col">Buchtitel</th>
          <th scope="col">der Herausgeber</th>
          <th scope="col">Seitenzahl</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 %}

Überprüfen Sie es mit Ihrem Browser. Da es keine Daten gibt, nur den Header.

http://127.0.0.1:8000/cms/book/
スクリーンショット 2019-12-29 21.01.09.png

Am Ende

Vorläufig konnte ich HTML anzeigen. Wenn Sie danach die API über "views.py" aufrufen und ausführen können, können Sie den Zweck erreichen. Ich bin neu im Python-Framework und konnte es anzeigen, ohne zu stolpern.

Recommended Posts

(Python) Versuchen Sie, eine Webanwendung mit Django zu entwickeln
Schritte zum Entwickeln einer Webanwendung in Python
Versuchen Sie es mit Pythons Webframework Django (1) - Von der Installation bis zum Serverstart
Ich möchte eine Webanwendung mit React und Python Flask erstellen
Entwicklung einer WEB-Anwendung mit Django [Django-Start]
Entwicklung einer WEB-Anwendung mit Django [Anwendungszusatz]
Erstellen Sie eine Webanwendung mit Django
Erstellen einer Webanwendung mit Flask ①
Erstellen einer Webanwendung mit Flask ③
Erstellen einer Webanwendung mit Flask ④
Entwicklung einer WEB-Anwendung mit Django [Modelldefinition]
Entwicklung der WEB-Anwendung mit Django [Grundeinstellung]
Versuchen Sie es mit dem Webanwendungsframework Flask
Entwicklung einer WEB-Anwendung mit Django [Request Processing]
Versuchen Sie, Excel mit Python (Xlwings) zu betreiben.
Entwicklung einer WEB-Anwendung mit Django [Zusätzliche Vorlage]
[Python] Eine schnelle Webanwendung mit Bottle!
Ich habe versucht, eine ToDo-App mit einer Flasche mit Python zu erstellen
Führen Sie eine Python-Webanwendung mit Docker aus
Ich habe eine WEB-Bewerbung bei Django gemacht
Ich habe eine Webanwendung in Python erstellt, die Markdown in HTML konvertiert
[Python] [Word] [python-docx] Versuchen Sie, mit python-docx eine Vorlage für einen Wortsatz in Python zu erstellen
So erstellen Sie eine Anwendung aus der Cloud mithilfe des Django-Webframeworks
Implementieren Sie eine einfache Anwendung mit Python Full Scratch ohne Verwendung eines Webframeworks.
Berechnen wir das statistische Problem mit Python
Versuchen Sie, mit django-import-export csv-Daten zu django hinzuzufügen
So öffnen Sie einen Webbrowser über Python
Vorgehensweise zur Verwendung der WEG-API von TeamGant (mit Python)
So entwickeln Sie eine Cart-App mit Django
Entwicklung einer WEB-Anwendung mit Django [Erstellung des Admin-Bildschirms]
Versuchen Sie, mit Python eine Lebenskurve zu zeichnen
Versuchen Sie, in Python einen "Entschlüsselungs" -Code zu erstellen
Versuchen Sie es mit dem Python-Webframework Tornado Part 1
Erstellen Sie eine Webmap mit Python und GDAL
Versuchen Sie, mit Python eine Diedergruppe zu bilden
Führen Sie Python-Dateien mit Django aus HTML aus
Versuchen Sie es mit dem Python-Webframework Tornado Part 2
Versuchen Sie Debian + Python 3.4 + django1.7 ……
Versuchen Sie es mit Django templates.html
Webanwendung mit Flasche (1)
Versuchen Sie es mit Tweepy [Python2.7]
Anfänger haben versucht, eine Cloud-native Webanwendung mit Datastore / GAE zu erstellen
Versuchen Sie, mithilfe der Python-Anforderungsbibliothek eine Webseite und eine JSON-Datei abzurufen
Wenn Sie eine TODO-Anwendung (verteilt) jetzt nur mit Python erstellen möchten
Versuchen Sie, mit WebSocket mit Django (Swamp Dragon) eine Todo-Verwaltungssite zu erstellen.
WEB Scraping mit Python und versuchen, aus Bewertungen eine Wortwolke zu machen
Versuchen Sie, eine Webanwendung mit Vue.js und Django (Mac Edition) zu erstellen - (1) Umgebungskonstruktion, Anwendungserstellung
Stellen Sie Python 3.6 / Django / Postgres-Webanwendungen in Azure bereit
Versuchen Sie, ein Python-Modul in C-Sprache zu erstellen
So richten Sie eine Python-Umgebung mit pyenv ein
Versuchen Sie, eine komprimierte Datei mit Python und zlib zu erstellen
Lassen Sie uns ein Befehls-Standby-Tool mit Python erstellen
[Anfänger] [Python / Django] Ein junger Webingenieur hat ein Django-Tutorial ausprobiert - Teil 1-
[CRUD] [Django] Erstellen Sie eine CRUD-Site mit dem Python-Framework Django ~ 1 ~
So stellen Sie eine Django-Anwendung in der Alibaba-Cloud bereit
[Anfänger] [Python / Django] Ein junger Webingenieur hat ein Django-Tutorial ausprobiert - Teil 2-
[Anfänger] [Python / Django] Ein junger Webingenieur hat ein Django-Tutorial ausprobiert - Teil 0-
[Anfänger] [Python / Django] Ein junger Webingenieur hat ein Django-Tutorial ausprobiert - Teil 5-