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.
Da dies meine erste Entwicklung mit Django
ist, werde ich eine Buchliste als Beispielanwendung erstellen.
Die Entwicklung wird gemäß dem folgenden Ablauf fortgesetzt.
Django
und erstellen Sie ein Projekt.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.
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
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.
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/. Um den Entwicklungsserver zu beenden, drücken Sie "Strg + C".
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.
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
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/
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/
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