http://www.kzfmix.com/flaski/
Informationen zur Installation und Verwendung von virtualenv finden Sie unter hier.
$ mkvirtualenv flaski
$ workon flaski
(flaski):flask_test hoge$ pip install flask
(flaski):flask_test hoge$ pip install sqlalchemy
{app.py}
from flask import Flask
app = Flask(__name__)
# http://127.0.0.1:Mit 5000 als Route("")Zugangspunktbezeichnung in
# @app.route("hoge")Wenn Sie mit etc. angeben, http://127.0.0.1:5000/Kann den Vorgang in hoge beschreiben.
@app.route("/")
def hello():
return "Hello World!"
if __name__ == "__main__":
#Start des Webservers
app.run()
Führen Sie es mit `` `python app.py``` aus. In der Standardausgabe wird Folgendes angezeigt.
(flaski)hoge:src hoge$ python app.py
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
Geben Sie `http: //127.0.0.1: 5000 /`
in Ihren Browser ein und Sie sollten Folgendes sehen:
├── flaski
│ ├── __init__.py
│ ├── database.py
│ └── models.py
├── do_create.py
└── do_insert.py
{database.py}
# -*- coding: utf-8 -*-
from sqlalchemy import create_engine
from sqlalchemy.orm import scoped_session, sessionmaker
from sqlalchemy.ext.declarative import declarative_base
import os
# wiki.Gibt an, dass eine Datenbankdatei mit dem Namen db erstellt werden soll
databese_file = os.path.join(os.path.abspath(os.path.dirname(__file__)), 'wiki.db')
#Geben Sie SQLite und die Erstellung der Tabelle an.
engine = create_engine('sqlite:///' + databese_file, convert_unicode=True)
#Geben Sie die Tabelle an, die für die Bindung erstellt werden soll.
db_session = scoped_session(sessionmaker(autocommit=False,
autoflush=False,
bind=engine))
# declarative_Instanziierung der Basis.
Base = declarative_base()
#Sitzungsspeicher zur Ausführung?
Base.query = db_session.query_property()
def init_db():
import flaski.models
#Erstellen mit dem Inhalt von Base ausführen?
Base.metadata.create_all(bind=engine)
{models.py}
# -*- coding: utf-8 -*-
from sqlalchemy import Column, Integer, String, Text, DateTime
from flaski.database import Base
from datetime import datetime
class WikiContent(Base):
__tablename__ = 'wikicontents' #Tabellenname
id = Column(Integer, primary_key=True) #Spalte 1(id)
title = Column(String(128), unique=True) #Spalte 2(title)
body = Column(Text) #Spalte 3(body)
date = Column(DateTime, default=datetime.now()) #Spalte 4(date)Stellen Sie das aktuelle Standarddatum und die aktuelle Uhrzeit ein
def __init__(self, title=None, body=None, date=None):
self.title = title
self.body = body
self.date = date
def __repr__(self):
return '<Title %r>' % (self.title)
{do_create.py}
from flaski.database import init_db
#Tabelle erstellen
init_db()
Durch Ausführen von do_create.py wird wiki.db im flaski-Verzeichnis erstellt. Überprüfen Sie den Inhalt.
{confirm_sqllite.}
$ > (flaski)hoge:flaski hoge$ sqlite3 wiki.db
SQLite version 3.8.5 2014-08-15 22:37:57
Enter ".help" for usage hints.
sqlite> .schema
CREATE TABLE wikicontents (
id INTEGER NOT NULL,
title VARCHAR(128),
body TEXT,
date DATETIME,
PRIMARY KEY (id),
UNIQUE (title)
);
{do_insert.py}
from flaski.database import init_db
from flaski.database import db_session
from flaski.models import WikiContent
#Die ID ist eine Seriennummer. Geben Sie Titel und Text an. Datum kann ohne Erlaubnis eingegeben werden(model.Standardmäßig ist py eingestellt)
c1 = WikiContent("Flask", "micro framework") #Spalte 1:'Flask'Spalte 2:'micro framework'Erstellen Sie eine Instanz durch Angabe
db_session.add(c1) #Ausführung einfügen
db_session.commit() #Commit ausführen
c2 = WikiContent("python", "pppython") #Das gleiche wie oben
c3 = WikiContent("kobito", "kakure-momojiri")
db_session.add(c2)
db_session.add(c3)
db_session.commit()
Lassen Sie uns die Tabelle früher überprüfen.
{confirm_sqllite2.}
(flaski)hoge:flaski hoge$ sqlite3 wiki.db
SQLite version 3.8.5 2014-08-15 22:37:57
Enter ".help" for usage hints.
sqlite> select * from wikicontents;
1|Flask|micro framework|2016-05-14 15:04:24.246057
2|python|pppython|2016-05-14 15:04:24.246057
3|kobito|kakure-momojiri|2016-05-14 15:04:24.246057
Sie können sehen, dass 3 Datensätze eingefügt wurden.
http://omake.accense.com/static/doc-ja/sqlalchemy/session.html
Zeigen Sie die Webseite mit den Werten der zuvor in SQLite erstellten Tabelle an.
├── flaski
│ ├── __init__.py
│ ├── database.py
│ └── models.py
├── app.py
├── static
│ └── snake.jpg
└── templates
├── index.html
├── layout.html
└── show_content.html
{app.py}
# -*- coding: utf-8 -*-
"""
Using SQLAlchemy and Flask get db record.(GET)
"""
from flask import Flask, render_template, abort
from flaski.models import WikiContent
app = Flask(__name__)
app.config['DEBUG'] = True
#Vom gestarteten Server/Beschreibt das Verhalten beim Zugriff.
# @app.route("/hoge")Wenn Sie schreiben, http://127.0.0.1:5000/Sie können das Verhalten beim Zugriff mit aa beschreiben.
@app.route("/")
def hello():
contents = WikiContent.query.all()
# index.Führen Sie dies aus, indem Sie den Kontext als Argument an HTML übergeben.
return render_template("index.html", contents=contents)
#/<title>Durch Angabe des Index.HTML-Titel=content.Der Titel wird angegeben. Methoden=["GET"]Geben Sie dann die GET-Anforderung an.
@app.route("/<title>", methods=["GET"])
def show_content(title):
"""
:param title:Abfragezeichenfolge für Modell
:return:
"""
#Filtern Sie nach Titel aus der Wikicontent-Tabelle(erhalten Sie durch Angabe, wo)Das erste bedeutet, nur eine Zeile zu erhalten.
# all()Dann erhalten Sie das Ergebnis in mehreren Listenformaten.
content = WikiContent.query.filter_by(title=title).first()
if content is None:
abort(404)
# show_content.HTML anzeigen. Inhalt als Argument übergeben.
return render_template("show_content.html", content=content)
if __name__ == "__main__":
#Starten Sie den Server
app.run()
snake.jpg
{index.html}
{% extends "layout.html" %}
{% block body %}
<h1>Flaski</h1>
<!-- snake.Anzeige von jpg-->
<img src="{{url_for('static', filename='snake.jpg')}}" alt="snake"/>
<ul>
<!--Für eine als Argument übergebene Inhaltsschleife-->
{% for content in contents %}
<!-- show_content.Führen Sie HTML aus.+ {{content.title}}Show.-->
<li><a href="{{url_for('show_content', title=content.title)}}">{{content.title}}</a></li>
{% endfor%}
</ul>
{% endblock %}
{show_content.html}
{% extends "layout.html" %}
{% block body %}
<!--Anzeige anhand des Inhalts des Inhalts-->
<h1>{{content.title}}</h1>
<div>{{content.body}}</div>
<p>{{content.date}}</p>
<div>{{content.body}}</div>
{% endblock %}
Bis zu diesem Punkt wird die folgende Seite unter http://127.0.0.1:5000 angezeigt.
Klicken Sie auf jeden Link, um den Inhalt von SQLite anzuzeigen. Wenn Sie beispielsweise dem Python-Link folgen, sieht es folgendermaßen aus.
Es wird mit dem Inhalt von Python von SQLite angezeigt. (Ich konnte es bekommen) Der Inhalt der folgenden ID = 2.
{confirm_sqllite2.}
(flaski)hoge:flaski hoge$ sqlite3 wiki.db
SQLite version 3.8.5 2014-08-15 22:37:57
Enter ".help" for usage hints.
sqlite> select * from wikicontents;
1|Flask|micro framework|2016-05-14 15:04:24.246057
2|python|pppython|2016-05-14 15:04:24.246057
3|kobito|kakure-momojiri|2016-05-14 15:04:24.246057
Versuchen Sie, die SQLite-Tabelle einzufügen und zu aktualisieren.
├── flaski
│ ├── __init__.py
│ ├── database.py
│ └── models.py
└── app.py
{app.py}
# -*- coding: utf-8 -*-
from flask import Flask, render_template, abort, request
from flaski.models import WikiContent
from flaski.database import db_session
from datetime import datetime
app = Flask(__name__)
app.config['DEBUG'] = True
@app.teardown_request
def shutdown_session(exception=None):
db_session.remove()
@app.route("/")
def hello():
contents = WikiContent.query.all()
return render_template("index.html", contents=contents)
@app.route("/<title>", methods=["GET"])
def show_content(title):
content = WikiContent.query.filter_by(title=title).first()
if content is None:
abort(404)
return render_template("show_content.html", content=content)
@app.route("/<title>", methods=["POST"])
def post_content(title=None):
if title is None:
abort(404)
content = WikiContent.query.filter_by(title=title).first()
#Wenn der Inhalt nicht abgerufen werden kann, fügen Sie ihn ein. Erstellen Sie daher eine Instanz von WikiContent.
if content is None:
content = WikiContent(title,
request.form["body"]
)
#Wenn der Inhalt abgerufen werden kann, wird er aktualisiert, also der Inhalt des Körpers und Datum / Uhrzeit=Stellen Sie die aktuelle Zeit ein
else:
content.body = request.form["body"]
content.date = datetime.now()
#Fügen Sie den Inhalt des Inhalts hinzu und legen Sie fest
db_session.add(content)
db_session.commit()
return content.body
if __name__ == "__main__":
app.run()
Führen Sie in diesem Status app.py aus.
Um eine http-Anfrage auf der Konsole zu stellen, installieren Sie httpie mit pip install httpie.
{insert_sqlite.}
# body=Update mit Test von httpie
http --form POST http://localhost:5000/httpie body="test from httpie"
Als ich den Inhalt überprüfte, wurde ein Datensatz mit der ID = 4 hinzugefügt.
{confirm_sqllite3.}
sqlite> select * from wikicontents;
1|Flask|micro framework|2016-05-14 15:04:24.246057
2|python|pppython|2016-05-14 15:04:24.246057
3|kobito|kakure-momojiri|2016-05-14 15:04:24.246057
4|httpie|test from httpie|2016-05-14 19:32:12.075871
Ich werde es dieses Mal aktualisieren.
{update_sqlite.}
# body=Aktualisiert mit geändert von httpie
http --form POST http://localhost:5000/httpie body="modified from httpie"
{confirm_sqllite4.}
sqlite> select * from wikicontents;
1|Flask|micro framework|2016-05-14 15:04:24.246057
2|python|pppython|2016-05-14 15:04:24.246057
3|kobito|kakure-momojiri|2016-05-14 15:04:24.246057
4|httpie|modified from httpie|2016-05-14 19:35:40.904904
Es wurde aktualisiert.
Wenn Sie in diesem Status http: // localhost: 5000 aktivieren, wird httpie hinzugefügt.
Wenn Sie auf httpie klicken, können Sie sehen, dass es im aktualisierten Zustand erworben wurde. Ich konnte POSTEN.
Recommended Posts