Hallo, ich heiße Nioh. Ich arbeite derzeit bei einem kleinen und mittleren Unternehmen. Um das Problem zu lösen, nicht zu wissen, was und wo gefragt werden soll, habe ich beschlossen, ein Telefonbuch als WEB-Anwendung zu erstellen, damit es problemlos geteilt werden kann.
** "Warum verwenden Sie nicht Google Spreadsheet?" **
Mir wurde sofort gesagt. Das ist richtig. Ich implementiere es immer noch, weil ich wissen wollte, wie man mit Modulen wie Flask umgeht.
Ich fragte mich, ob die oben genannten Funktionen notwendig waren.
Um ehrlich zu sein, war es jedoch unvermeidlich, dass ich über die Basiszertifizierung stolperte, daher werde ich zuerst Teile entsprechend dem Verwendungsfluss herstellen.
Ich wollte es mit Python machen, also werde ich es mit Flask machen.
Flask ist ein WEB-Anwendungsframework, und es scheint, dass dieses oder Django verwendet wird, um WEB-Anwendungen mit Python zu erstellen.
Benutzer ⇔ Telefonbuch-DB
Als Vermittler
Benutzer ⇔ Homepage ⇔ Python (Flasche) ⇔ Telefonbuch DB
Das funktioniert so.
Ich dachte, es wäre einfach, die Installation usw. zu verstehen, wenn ich hier anschaue.
helloworld.py
from flask import Flask
app = Flask(__name__) #Initialisieren
@app.route(/)
#Routing (zB http://www.name.com/Anwendung zum Ausführen
# http://www.name.com/Wenn Sie selbst ausführen möchten, klicken Sie hier
# @app.route(/self)Ändern
def hello_world():
return "Hello World!"
if __name__ == "__main__":
app.run()
Wenn Sie dies im Terminal tun, ist es OK
Lesen Sie zunächst Grundlegende Authentifizierung mit Flasche.
pip install Flask-HTTPAuth
Das Link-Ziel ist alles in Kleinbuchstaben, aber es scheint, dass auch Großbuchstaben gemischt sind.
Überraschend? Einfach zu
Die Quelle sieht so aus
Basic_auth.py
from flask import Flask
from flask_httpauth import HTTPBasicAuth
app = Flask(__name__)
auth = HTTPBasicAuth() #Erstellen eines Auth-Objekts
users = {
"john": "hello",
"susan": "bye"
}
@auth.get_password #Schmücken
def get_pw(username):
if username in users:
return users.get(username)
return None
@app.route('/')
@auth.login_required #
def index():
return "Hello, %s!" % auth.username()
if __name__ == '__main__':
app.run()
Ich werde dies mit einer geringfügigen Änderung verwenden.
Implementieren Sie DB⇔Browser.
Zunächst zu Jinja2 Jinja2 ist eine Template-Engine, die von Flask verwendet wird. Schreiben Sie in HTML, Erstellen Sie einen "Vorlagen" -Ordner im APP-Ordner und fügen Sie den mit Jinja2 geschriebenen HTML-Code ein.
---app.py ------ | --templates Ordner ------|--templates.html
Es fühlt sich an, als würde ich es vorbereiten und mit templates.html spielen.
Um ehrlich zu sein, erinnern wir uns einfach an {% für ~~%} ~~ {% endfor%}. Der Rest wird beim Verschachteln verwendet.
Als nächstes über DB Verwenden Sie das Modul von sqlite3. Dazu habe ich auf [python-izm] verwiesen (http://www.python-izm.com/contents/external/sqlite.shtml). Informationen zur Verwendung von SQLITE finden Sie unter DBonline.
Nachdem ich eine Tabelle mit dem SQLITE-Browser erstellt hatte, dachte ich, dass ich zunächst nicht lernen musste, wie man Sqlite verwendet, außer ** SELECT und INSERT UPDATE. ** **.
Ich denke, ich werde es in der Lage sein, es angemessen zu verwenden.
Für das sqlite3-Modul wird nur die Syntax gelernt.
sample.py
import sqlite3
conn = sqlite3.connect("[DB Name und Pfad]")
cursor = conn.cursor()
cursor.execute("[SQL-Syntax]")
conn.commit() #Wenn Sie die select-Anweisung damit speichern, ist dies in Ordnung, da es sich nur um eine Referenz handelt
cursor.close()
conn.close()
Dies ist ein Satz. [Tipps] Wenn Sie beispielsweise eine Variable in die SQL-Syntax einfügen, wird die Variable mit ["Auswählen? Aus Tabellen" (Taple)] zugewiesen. Wenn nur eine Variable vorhanden ist, schlägt dies fehl, wenn Sie kein Taple im Format (Variable **, **) erstellen, auch wenn nur eine vorhanden ist.
Ich habe es so gemacht.
app.py
#-*- coding:utf-8 -*-
#! usr/env/python
from flask import Flask,render_template
import csv
import sqlite3
from flask_httpauth import HTTPBasicAuth
app=Flask(__name__)
auth = HTTPBasicAuth()
users = {"john":"hello","susan":"bye"}
@auth.get_password
def get_pw(username):
if username in users:
return users.get(username)
return None
@app.route("/")
def hello():
return ("hello world")
@app.route("/index")
@auth.login_required
def index():
conn = sqlite3.connect("sampledb.db")
cursor = conn.cursor()
cursor.execute("select * from contacts ")
contacts_data = cursor.fetchall() #In Liste herausnehmen
cursor.close()
conn.close()
return render_template("index.html",contacts = contacts_data)
if __name__ == '__main__':
app.run(debug=True)
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset = "utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width,initial-scale=1">
<script src="http://code.jquery.com/jquery-1.11.1.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-1q8mTJOASx8j1Au+a5WDVnPi2lkFfwwEAa8hDDdjZlpLegxhjVME1fgjWPGmkzs7" crossorigin="anonymous">
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js" integrity="sha384-0mSbJDEHialfmuBBQP6A4Qrprq5OVfW37PRR3j5ELqxss1yVqOtnepnHVP9aJ7xS" crossorigin="anonymous"></script>
</head>
<body>
<div class="container">
<div class="header">
<h3 class="text-muted">Telefonbuch</h3>
<div class = "table-responsive">
<table class = "table table-bordered table-hover">
<tr>
<th>ID</th>
<th>Name</th>
<th>Number</th>
<th>Comment</th>
</tr>
{% for num in contacts %}
<tr>
{% for name in num %}
<td>{{name}}</td>
{% endfor %}
</tr>
{% endfor %}
</table>
</div>
</div>
</div>
</body>
</html>
Sie haben jetzt die Basisauthentifizierung und den Anzeigeteil implementiert. Klicken Sie hier für mehr ↓
Versuchen Sie, eine WEB-Anwendung für ein Telefonbuch mit Flasche Teil 2 zu erstellen
Eigentlich weiß ich nicht viel über Sicherheit, also bringen Sie mir dies bitte auf leicht verständliche Weise bei.
Recommended Posts