[PYTHON] Erstellen einer Webanwendung mit Flask ③

Beschreibung von CRUD

Zunächst werde ich das Konzept von CRUD erläutern, das in Webanwendungen gut zu wissen ist. CRUD ist eine Abkürzung für Erstellen, Lesen, Aktualisieren und Löschen. Am Beispiel dieser Anwendung bedeutet dies Folgendes.

  1. ** Erstellen **: Neue Artikelerstellungsfunktion (neue Datenerstellung)
  2. ** Lesen **: Artikellistenanzeigefunktion, Artikeldetailanzeigefunktion (Daten lesen)
  3. ** Update **: Artikelaktualisierungsfunktion (Daten aktualisieren)
  4. ** Löschen **: Artikellöschfunktion (Daten löschen) Wenn Sie an eine bestimmte Ressource denken, können Sie eine Reihe von Funktionen erstellen, indem Sie diese CRUD erfüllen.

Geteilte views.py

Teilen Sie views.py vor dem Hinzufügen der CRUD-Funktionalität in drei Teile: cafe.py, logging.py und review.py. Erstellen Sie einen Ansichtsordner unter dem Ordner cafe_site und erstellen Sie darin die Dateien cafe.py, loging.py, reviews.py. Blueprint Verwenden Sie Blueprint, um die Ansichtsdatei für jede zuvor erstellte Datei aufzuteilen und in eine Anwendung umzuwandeln.

python:./cafe_site/views/cafe.py


from flask import Blueprint

cafe = Blueprint('cafe', __name__)

python:./cafe_site/views/loging.py


from flask import Blueprint

loging = Blueprint('loging', __name__)

python:./cafe_site/views/review.py


from flask import Blueprint

review = Blueprint('review', __name__)

Und da der Anwendungsname in ** cafe **, ** logging **, ** review ** anstelle von ** app ** geändert wurde, lautet das Routing auch @ cafe.route (), @ logging.route. Wechseln Sie zu () ,@ review.route (),. Ändern Sie als Nächstes den Teil der Datei **. / Cafe_site / __ init__.py **, der Ansichten importiert.

python:./__init__.py


from cafe_site.views.cafe import cafe
app.register_blueprint(cafe)

from cafe_site.views.loging import loging
app.register_blueprint(loging)

from cafe_site.views.reviews import review
app.register_blueprint(review, url_prefix='/users')

Jetzt können Sie reviews.py für Funktionen aktualisieren, die sich auf zukünftige Artikel beziehen, logging.py für Funktionen, die sich auf die Anmeldung beziehen, und cafe.py für Funktionen, die sich auf die Cafe-Homepage beziehen.

Erstellen Sie einen Login-Authentifizierungsdekorateur

Abschließend möchte ich einen Dekorator für die Login-Authentifizierung erstellen, der die Login-Authentifizierung vereinfacht, bevor ich mit dem Hinzufügen der CRUD-Funktionalität fortfahre.

python:./cafe_site/views/loging.py


from functools import wraps

def login_required(loging):
    @wraps(loging)
    def inner(*args, **kwargs):
        if not session.get('logged_in'):
            return redirect(url_for('loging.login'))
        return loging(*args, **kwargs)
    return inner

Bei Prozessen, für die eine Anmeldung erforderlich ist, kann die Anmeldeauthentifizierung einfach durch Hinzufügen des Satzes @login_required unmittelbar vor der Ansichtsmethode durchgeführt werden.

Artikelbuchungsfunktion erstellen

Beginnen wir mit der Erstellung der Artikelposting-Funktion. [Erstellen einer Webanwendung mit Flask ③] Verwenden Sie die in () erstellte Datenbankfunktion, um eine Artikelbuchungsfunktion zu erstellen.

Der Navigationsleiste wurde ein neuer Beitragslink hinzugefügt

Bearbeiten Sie theme.html und fügen Sie der Navigationsleiste einen Link "Überprüfung" für neue Beiträge hinzu.

html:./cafe_site/templates/theme.html


<ul class="main-nav">
    {% if not session.logged_in %}

    {% else %}
     <li><a href="{{ url_for('review.new_review') }}">review</a></li>

    {% endif %}
</ul>

html:./cafe_site/templates/theme.html


<!DOCTYPE html>
<html lang="ja">
    <head>
        {% block head %}
        <meta charset="utf-8">
        <title>{% block title %}{% endblock %}</title>
        <meta name="description" content="Café, das Arbeitsraum bietet">
        <link rel="icon" type="image/png" href="/static/images/favicon.png ">
        <meta name="viewport" content="width=device-width, initial-scale=1">

    <!-- CSS -->
        <link rel="stylesheet" href="https://unpkg.com/ress/dist/ress.min.css">
        <link href="https://fonts.googleapis.com/css?family=Philosopher" rel="stylesheet">
        <link href="/static/style.css" rel="stylesheet">
        {% endblock %}
    </head>

    <body>
        <div id="{{ id }}" class="big-bg">
            <header class="page-header wrapper">
                <h1><a href="/"><img class="logo" src="/static/images/logo.svg" alt="Kaffeehaus nach Hause"></a></h1>
                <nav>
                    <ul class="main-nav">
                        {% if not session.logged_in %}
                        <li><a href="{{ url_for('cafe.news') }}">News</a></li>
                        <li><a href="{{ url_for('cafe.menu') }}">Menu</a></li>
                        <li><a href="{{ url_for('cafe.contact') }}">Contact</a></li>
                        <li><a href="{{ url_for('loging.login') }}">login</a></li>
                        {% else %}
                        <li><a href="{{ url_for('cafe.news') }}">News</a></li>
                        <li><a href="{{ url_for('cafe.menu') }}">Menu</a></li>
                        <li><a href="{{ url_for('cafe.contact') }}">Contact</a></li>
                        <li><a href="{{ url_for('review.new_review') }}">review</a></li>
                        <li><a href="{{ url_for('review.show_reviews') }}">board</a></li>
                        <li><a href="{{ url_for('loging.logout') }}">logout</a></li>
                        {% endif %}
                    </ul>
                </nav>
            </header>
            {% for message in get_flashed_messages() %}
                <div class="alert">
                  <font color="red">
                    <p>※{{ message }}</p>
                  </font>
                </div>
            {% endfor %}
            {% block content %}
            {% endblock %}
        </div>
        {% block content2 %}
        {% endblock %}
        {% block footer %}
        {% endblock %}
    </body>
</html>

python:./cafe_site/views/reviews.py


@review.route('/reviews/new', methods=['GET'])
@login_required
def new_review():
    return render_template('reviews/review.html', id="review")

Erstellen eines Artikeleinreichungsformulars

Bearbeiten Sie abschließend die in Erstellen einer Webanwendung mit Flask ① erstellte Datei review.html ein wenig.

html:./cafe_site/templates/views/reviews.html


{% extends "theme.html" %}
{% block title %}Coffee House{% endblock %}
{% block head %}
  {{ super() }}
  <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css">
{% endblock %}
{% block content %}
    <div class="form-content wrapper">
        <h2 class="page-title">Review</h2>
        <form method="POST" action="{{ url_for('review.add_review') }}">

            <div class="star-rating">
                <div class="star-rating__wrap">
                  <input class="star-rating__input" id="star-rating-5" type="radio" name="star" value=5>
                  <label class="star-rating__ico fa fa-star-o fa-lg" for="star-rating-5" title="5 out of 5 stars"></label>
                  <input class="star-rating__input" id="star-rating-4" type="radio" name="star" value=4>
                  <label class="star-rating__ico fa fa-star-o fa-lg" for="star-rating-4" title="4 out of 5 stars"></label>
                  <input class="star-rating__input" id="star-rating-3" type="radio" name="star" value=3>
                  <label class="star-rating__ico fa fa-star-o fa-lg" for="star-rating-3" title="3 out of 5 stars"></label>
                  <input class="star-rating__input" id="star-rating-2" type="radio" name="star" value=2>
                  <label class="star-rating__ico fa fa-star-o fa-lg" for="star-rating-2" title="2 out of 5 stars"></label>
                  <input class="star-rating__input" id="star-rating-1" type="radio" name="star" value=1>
                  <label class="star-rating__ico fa fa-star-o fa-lg" for="star-rating-1" title="1 out of 5 stars"></label>
                </div>
            </div>
            <div>
                <label for="title">Titel</label>
                <input placeholder="title" name="title" type="text"/>
            </div>
            <div>
                <label for="message">Botschaft</label>
                <textarea id="message" placeholder="message" name="text"></textarea>
            </div>
            <input type="submit" class="button" value="Post">
        </form>
    </div>
{% endblock %}
{% block footer %}
    <footer>
        <div class="wrapper">
            <p><small>&copy; Coffee House</small></p>
        </div>
    </footer>
{% endblock %}

Buchungsfunktion

Bisher haben wir ein Anmeldeformular erstellt. Erstellen Sie als Nächstes eine Funktion zum Speichern der aus dem Buchungsformular veröffentlichten Artikel in der Datenbank.

Erstellen Sie add_review

In review.html wird das Formular an gesendet action =" {{url_for ('review.add_review')}} ". Erstellen Sie ** review.add_review ** und fügen Sie einen Prozess hinzu, um den veröffentlichten Inhalt zu erhalten und in der Datenbank zu speichern. Fügen Sie ** add_review ** zu views / reviews.py hinzu.

python:./cafe_site/views/reviews.py


@review.route('/reviews', methods=['POST'])
@login_required
def add_review():
    review = Review(
        star=request.form['star'],
        title=request.form['title'],
        text=request.form['text']
    )
    db.session.add(review)
    db.session.commit()
    flash('Neuer Artikel erstellt')
    return redirect(url_for('review.show_reviews'))

Geben Sie wie bei der Erstellung des Anmeldeformulars beim Senden von Daten die POST-Methode an. Wir bearbeiten, ob Sie mit @login_required angemeldet sind. Wenn Sie angemeldet sind, verwenden Sie das im vorherigen Kapitel erstellte Überprüfungsmodell, um eine Modellinstanz für den Titel und den gesendeten Inhalt des Artikels zu erstellen.

python:./cafe_site/views/reviews.py


review = Review(
        star=request.form['star'],
        title=request.form['title'],
        text=request.form['text']
    )

Führen Sie dann für die erstellte Modellinstanz die folgende Verarbeitung durch, um den neuen Artikelinhalt in der Datenbank zu speichern.

python:./cafe_site/views/reviews.py


db.session.add(review)
db.session.commit()

db.session.add () fügt neuen Inhalt hinzu und db.session.commit () schreibt die Daten in die Datenbank.

Erstellung von Artikeldetailfunktionen (Lesen)

Fügen Sie als Nächstes eine Blog-Detailfunktion hinzu, damit Details wie der Artikelkörper angezeigt werden.

Link "Weiterlesen" hinzugefügt

Fügen Sie zusätzlich zu jedem Titel auf dem Listenbildschirm einen Link "Weitere Informationen" hinzu.

html:./cafe_site/templates/views/index.html


{% extends "theme.html" %}
{% block title %}Coffee House{% endblock %}
{% block head %}
  {{ super() }}
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css">
  <script src="https://code.jquery.com/jquery-3.2.1.slim.min.js"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"></script>
{% endblock %}
{% block content %}
<div class="wrapper">
  <h2 class="page-title">board</h2>
  {% for review in reviews %}
  <div class="card bg-transparent">
    <div class="card-body">
      {% if review.star == 1 %}
      <h5 class="card-title">rating : <img src="/static/images/star.png " width="15" height="15"></h5>
      {% endif %}
      {% if review.star  == 2 %}
      <h5 class="card-title">rating : <img src="/static/images/star.png " width="15" height="15"><img src="/static/images/star.png " width="15" height="15"></h5>
      {% endif %}
      {% if review.star == 3 %}
      <h5 class="card-title">rating : <img src="/static/images/star.png " width="15" height="15"><img src="/static/images/star.png " width="15" height="15"><img src="/static/images/star.png " width="15" height="15"></h5>
      {% endif %}
      {% if review.star == 4 %}
      <h5 class="card-title">rating : <img src="/static/images/star.png " width="15" height="15"><img src="/static/images/star.png " width="15" height="15"><img src="/static/images/star.png " width="15" height="15"><img src="/static/images/star.png " width="15" height="15"></h5>
      {% endif %}
      {% if review.star == 5 %}
      <h5 class="card-title">rating : <img src="/static/images/star.png " width="15" height="15"><img src="/static/images/star.png " width="15" height="15"><img src="/static/images/star.png " width="15" height="15"><img src="/static/images/star.png " width="15" height="15"><img src="/static/images/star.png " width="15" height="15"></h5>
      {% endif %}
      <h5 class="card-subtitle">{{ review.title }}</h5>
      <a class="card-link" href="{{ url_for('review.show_review', id=review.id) }}" >Weiterlesen</a>
    </div>
  </div>
      {% else %}
Keine Beiträge
      {% endfor %}
</div>
{% endblock %}
{% block footer %}
    <footer>
        <div class="wrapper">
            <p><small>&copy; Coffee House</small></p>
        </div>
    </footer>
{% endblock %}

Hier wurden Argumente zu "{{url_for ('review.show_review', id = review.id)}}" und "url_for" hinzugefügt. Dadurch kann die ID des Artikels, auf den Sie geklickt haben, beim Aufruf von show_review () übergeben werden.

Fügen Sie show_review hinzu

Fügen Sie eine neue show_review zu views / reviews.py hinzu.

python:./cafe_site/views/reviews.py


@review.route('/board')
@login_required
def show_reviews():
    reviews = Review.query.order_by(Review.id.desc()).all()
    return render_template('reviews/index.html', reviews=reviews, id="board")

@review.route('/reviews/<int:id>', methods=['GET'])
@login_required
def show_review(id):
    review = Review.query.get(id)
    return render_template('reviews/show.html', review=review, id="show")

Geben Sie in "reviews = Review.query.order_by (Review.id.desc ()). All ()" die in url_for übergebene Variable * id * an. Fügen Sie außerdem show_review (id) und den Argumentnamen hinzu, damit auf die Variable * id * verwiesen werden kann.

In der show_review-Methode können Sie den Artikel mit der übergebenen ID aus der Datenbank abrufen, indem Sie einfach "review = Review.query.get (id)" schreiben.

Details zum Artikelinhalt anzeigen

Erstellen Sie abschließend eine show.html-Datei, um die Details des Artikelinhalts anzuzeigen.

html:./cafe_site/templates/views/show.html


{% extends "theme.html" %}
{% block title %}Coffee House{% endblock %}
{% block head %}
  {{ super() }}
{% endblock %}
{% block content %}
<div class="show-content wrapper">

  <h2>{{ review.title }}</h2>

    {% if review.star == 1 %}
      <h2>Auswertung: <img src="/static/images/star.png " width="40" height="40"></h2>
    {% endif %}
    {% if review.star  == 2 %}
      <h2>rating : <img src="/static/images/star.png " width="40" height="40"><img src="/static/images/star.png " width="40" height="40"></h2>
    {% endif %}
    {% if review.star == 3 %}
      <h2>rating : <img src="/static/images/star.png " width="40" height="40"><img src="/static/images/star.png " width="40" height="40"><img src="/static/images/star.png " width="40" height="40"></h2>
    {% endif %}
    {% if review.star == 4 %}
      <h2>rating : <img src="/static/images/star.png " width="40" height="40"><img src="/static/images/star.png " width="40" height="40"><img src="/static/images/star.png " width="40" height="40"><img src="/static/images/star.png " width="40" height="40"></h2>
    {% endif %}
    {% if review.star == 5 %}
      <h2>rating : <img src="/static/images/star.png " width="40" height="40"><img src="/static/images/star.png " width="40" height="40"><img src="/static/images/star.png " width="40" height="40"><img src="/static/images/star.png " width="40" height="40"><img src="/static/images/star.png " width="40" height="40"></h2>
    {% endif %}

    <br> {{ review.text|safe }}

    <br>
    <br>Datum und Uhrzeit veröffentlichen{{ review.created_at }}
</div>
{% endblock %}

Artikelbearbeitungsfunktion erstellen (Update)

Fügen Sie eine Artikelbearbeitungsfunktion hinzu, damit Sie den veröffentlichten Artikel bearbeiten können.

Schaltfläche "Bearbeiten" hinzufügen

Fügen Sie dem Artikeldetails-Bildschirm eine Schaltfläche "Bearbeiten" hinzu.

html:./cafe_site/templates/views/show.html


<form action="{{ url_for('review.edit_review', id=review.id) }}" method="GET">
    <input type="submit" class="button" value="Bearbeiten">
</form>

Fügen Sie edit_review hinzu

Fügen Sie edit_review zu views / reviews.py hinzu, damit der Bearbeitungsbildschirm zurückgegeben wird, wenn Sie auf die Schaltfläche Bearbeiten klicken.

python:./cafe_site/views/reviews.py


@review.route('/reviews/<int:id>/edit', methods=['GET'])
@login_required
def edit_review(id):
    review = Review.query.get(id)
    return render_template('reviews/edit.html', review=review)

Bearbeitungsbildschirm erstellen

Erstellen Sie eine neue edit.html und erstellen Sie einen Bearbeitungsbildschirm.

html:./cafe_site/templates/views/edit.html


{% extends "theme.html" %}
{% block title %}Coffee House{% endblock %}
{% block head %}
  {{ super() }}
  <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css">
{% endblock %}
{% block content %}
<div class="edit wrapper">
  <h2 class="page-title">review</h2>
  <form action="{{ url_for('review.update_review', id=review.id) }}" method=post class=add-review>

    <div class="star-rating">
      <div class="star-rating__wrap">
        <input class="star-rating__input" id="star-rating-5" type="radio" name="star" value=5>
        <label class="star-rating__ico fa fa-star-o fa-lg" for="star-rating-5" title="5 out of 5 stars"></label>
        <input class="star-rating__input" id="star-rating-4" type="radio" name="star" value=4>
        <label class="star-rating__ico fa fa-star-o fa-lg" for="star-rating-4" title="4 out of 5 stars"></label>
        <input class="star-rating__input" id="star-rating-3" type="radio" name="star" value=3>
        <label class="star-rating__ico fa fa-star-o fa-lg" for="star-rating-3" title="3 out of 5 stars"></label>
        <input class="star-rating__input" id="star-rating-2" type="radio" name="star" value=2>
        <label class="star-rating__ico fa fa-star-o fa-lg" for="star-rating-2" title="2 out of 5 stars"></label>
        <input class="star-rating__input" id="star-rating-1" type="radio" name="star" value=1>
        <label class="star-rating__ico fa fa-star-o fa-lg" for="star-rating-1" title="1 out of 5 stars"></label>
      </div>
    </div>
      <div>
        <label for="name">Titel</label>
        <input placeholder="Titel" name="title" type="text" value={{ review.title }}/>
      </div>
      <div class="form-group">
        <label for="message">Botschaft</label>
        <textarea id="message" placeholder="Rezension" name="text">{{ review.text | safe }}</textarea>
      </div>
      <input type="submit" class="button" value="aktualisieren">
  </form>
{% endblock %}
{% block footer %}
    <footer>
        <div class="wrapper">
            <p><small>&copy; Coffee House</small></p>
        </div>
    </footer>
{% endblock %}

Update_review erstellen

Erstellen Sie update_review in reviews.py und fügen Sie einen Prozess hinzu, um die im Formular eingegebenen Änderungen zu erhalten und die Datenbank zu aktualisieren.

python:./cafe_site/views/reviews.py


@review.route('/reviews/<int:id>/update', methods=['POST'])
@login_required
def update_review(id):
    review = Review.query.get(id)
    review.star = request.form['star']
    review.title = request.form['title']
    review.text = request.form['text']
    db.session.merge(review)
    db.session.commit()
    flash('Artikel aktualisiert')
    return redirect(url_for('review.show_reviews'))

** Stern **, ** Titel **, ** Text ** werden für die von Review.query.get (id) erhaltene Überprüfung aktualisiert. Verwenden Sie beim Erstellen, Hinzufügen, aber beim Aktualisieren "db.session.merge (review)" und schließlich "db.session.commit ()", um die Datenbank zu aktualisieren.

Erstellen einer Artikellöschfunktion (Löschen)

Fügen Sie schließlich die Möglichkeit hinzu, Artikel zu löschen.

Schaltfläche Löschen hinzufügen

html:./cafe_site/templates/views/show.html


<form action="{{ url_for('review.delete_review', id=review.id) }}" method="post">
    <input type="submit" class="button" value="Löschen">
</form>

Fügen Sie delete_review hinzu

Fügen Sie ** delete_review ** zu views / reviews.py hinzu und fügen Sie einen Prozess zum Löschen des Artikels hinzu, wenn Sie auf die Schaltfläche Löschen klicken.

python:./cafe_site/views/reviews.py


@review.route('/reviews/<int:id>/delete', methods=['POST'])
@login_required
def delete_review(id):
    review = Review.query.get(id)
    db.session.delete(review)
    db.session.commit()
    flash('Beitrag gelöscht')
    return redirect(url_for('review.show_reviews'))

Um den Inhalt der Datenbank zu löschen, geben Sie "db.session.delete (review)" an. Sie haben jetzt alle Funktionen von CRUD hinzugefügt. Schauen wir uns zum Schluss das Gesamtbild von reviews.py an.

python:./cafe_site/views/reviews.py


from flask import request, redirect, url_for, render_template, flash, session
from cafe_site import db
from cafe_site import app
from cafe_site.models.reviews import Review
from cafe_site.views.loging import login_required
from flask import Blueprint

review = Blueprint('review', __name__)

@review.route('/board')
@login_required
def show_reviews():
    reviews = Review.query.order_by(Review.id.desc()).all()
    return render_template('reviews/index.html', reviews=reviews, id="board")

@review.route('/reviews', methods=['POST'])
@login_required
def add_review():
    review = Review(
        star=request.form['star'],
        title=request.form['title'],
        text=request.form['text']
    )
    db.session.add(review)
    db.session.commit()
    flash('Neuer Artikel erstellt')
    return redirect(url_for('review.show_reviews'))

@review.route('/reviews/new', methods=['GET'])
@login_required
def new_review():
    return render_template('reviews/review.html', id="review")

@review.route('/reviews/<int:id>', methods=['GET'])
@login_required
def show_review(id):
    review = Review.query.get(id)
    return render_template('reviews/show.html', review=review, id="show")

@review.route('/reviews/<int:id>/edit', methods=['GET'])
@login_required
def edit_review(id):
    review = Review.query.get(id)
    return render_template('reviews/edit.html', review=review)

@review.route('/reviews/<int:id>/update', methods=['POST'])
@login_required
def update_review(id):
    review = Review.query.get(id)
    review.star = request.form['star']
    review.title = request.form['title']
    review.text = request.form['text']
    db.session.merge(review)
    db.session.commit()
    flash('Artikel aktualisiert')
    return redirect(url_for('review.show_reviews'))

@review.route('/reviews/<int:id>/delete', methods=['POST'])
@login_required
def delete_review(id):
    review = Review.query.get(id)
    db.session.delete(review)
    db.session.commit()
    flash('Beitrag gelöscht')
    return redirect(url_for('review.show_reviews'))

Die Fortsetzung wird unter Erstellen einer Webanwendung mit Flask ④ erläutert.

Recommended Posts

Erstellen einer Webanwendung mit Flask ②
Erstellen einer Webanwendung mit Flask ①
Erstellen einer Webanwendung mit Flask ③
Erstellen einer Webanwendung mit Flask ④
Erstellen einer Web-App für die Sprachtranskription
Versuchen Sie es mit dem Webanwendungsframework Flask
Erstellen einer Datenanalyseanwendung mit Streamlit
Webanwendung mit Flasche (1)
Erstellen einer interaktiven Anwendung mithilfe eines Themenmodells
[GCP] Verfahren zum Erstellen einer Webanwendung mit Cloud-Funktionen (Python + Flask)
Ich möchte eine Webanwendung mit React und Python Flask erstellen
Entwicklung von Webanwendungen mit Flask
Webanwendung mit Python + Flask ② ③
Webanwendung mit Python + Flask ④
(Python) Versuchen Sie, eine Webanwendung mit Django zu entwickeln
Entwicklung einer WEB-Anwendung mit Django [Django-Start]
Entwicklung einer WEB-Anwendung mit Django [Anwendungszusatz]
Erstellen eines Flask-Servers mit Docker
Erstellen einer einfachen Tabelle mit Stettytable
Erstellen eines Lernmodells mit MNIST
Lassen Sie uns eine WEB-Anwendung für das Telefonbuch mit Flasche Teil 1 erstellen
Webanwendung mit Python + Flask (unter Verwendung von VScode) # 1 - Aufbau einer virtuellen Umgebung-
Python: Einführung in Flask: Erstellen einer Nummernidentifizierungs-App mit MNIST
Erstellen Sie mit Chalice eine flaschen- / flaschenähnliche Webanwendung auf AWS Lambda
Lassen Sie uns eine WEB-Anwendung für das Telefonbuch mit Flasche Teil 2 erstellen
Lassen Sie uns eine WEB-Anwendung für das Telefonbuch mit Flasche Teil 3 erstellen
Lassen Sie uns eine WEB-Anwendung für das Telefonbuch mit Flasche Teil 4 erstellen
Entwicklung einer WEB-Anwendung mit Django [Modelldefinition]
Entwicklung der WEB-Anwendung mit Django [Grundeinstellung]
WEB-Anwendungsentwicklung mit Django-Development Environment Construction-
Anzeigen von Matplotlib-Diagrammen in einer Webanwendung
Eindrücke von der Verwendung von Flask für einen Monat
Entwicklung einer WEB-Anwendung mit Django [Request Processing]
Entwicklung einer WEB-Anwendung mit Django [Zusätzliche Vorlage]
[Python] Eine schnelle Webanwendung mit Bottle!
Erstellen Sie eine einfache Web-App mit Flasche
Führen Sie eine Python-Webanwendung mit Docker aus
Erstellen Sie einen Webdienst mit Docker + Flask
Ich habe versucht, das Webanwendungs-Framework zu vergleichen
Ich habe eine WEB-Bewerbung bei Django gemacht
Erstellen Sie mit pyenv unter Ubuntu 12.04 schnell eine Ausführungsumgebung für Python3.4 + Nginx + uWSGI + Flask-Webanwendungen
Einstellungen der Kolbenanwendung
Starten Sie einen Webserver mit Bottle and Flask (ich habe auch versucht, Apache zu verwenden)
Implementieren Sie eine einfache Anwendung mit Python Full Scratch ohne Verwendung eines Webframeworks.
[Python] Teilen Sie eine große Flask-Datei mit Blueprint
Entwicklung einer WEB-Anwendung mit Django [Erstellung des Admin-Bildschirms]
Erstellen Sie eine Webmap mit Python und GDAL
Schritte zum Entwickeln einer Webanwendung in Python
Starten Sie einen Webserver mit Python und Flask
Wovon ich beim Erstellen von Webanwendungen in einer Windows-Umgebung abhängig war
Lassen Sie uns mit Flask eine Webanwendung zur Konvertierung von A nach B erstellen! Von Grund auf neu ...
Anfänger haben versucht, eine Cloud-native Webanwendung mit Datastore / GAE zu erstellen
Versuchen Sie, eine Webanwendung mit Vue.js und Django (Mac Edition) zu erstellen - (1) Umgebungskonstruktion, Anwendungserstellung
Der Tag, an dem ein Anfänger, der zweieinhalb Monate mit dem Programmieren begann, eine Webanwendung mit Flask erstellte