ホームページ >ウェブフロントエンド >jsチュートリアル >シンプルな Web サイトを構築する方法を教えます: Python 開発 Web サーバー
Python には、基本的な小さなアーキテクチャから完全なアーキテクチャに至るまで、無数の Web フレームワークがあり、それぞれに独自の利点があります。これで Web 開発を行う準備が整いましたが、詳細に入る前に、最初から始めましょう。
目標
既存のリッチ画像リソースを使用して画像閲覧Webサイトを構築
python3
flask: オープンソースの Python Web サーバー フレームワーク
jinja2:flask のデフォルトのテンプレート エンジン
推奨の pycharm
Python は次のインターフェースを提供します: WSGI: Web サーバー ゲートウェイ インターフェース
Web 開発者が必要とするのは、HTTP 要求に応答する関数を実装することだけです。 TCP 接続、HTTP の生の要求および応答形式には影響しません。
次の例は最も単純な Web アプリケーションです:
# hello.pydef application(environ, start_response): start_response('200 OK', [('Content-Type', 'text/html')]) return [b'<h1>Hello, Python web!</h1>']# server.py# 从wsgiref模块导入:from wsgiref.simple_server import make_server# 导入我们自己编写的application函数:from hello import application# 创建一个服务器,IP地址为空,端口是8000,处理函数是application:httpd = make_server('', 8000, application) print('Serving HTTP on port 8000...')# 开始监听HTTP请求:httpd.serve_forever()
environ: すべての HTTP リクエスト情報を含む dict オブジェクト
start_response : HTTPレスポンスを送信する関数です。
2 つのスクリプトを同じディレクトリに配置し、server.py を実行し、http://127.0.0.1:8000 にアクセスして効果を確認します。
実際、Web アプリケーションはさまざまな URL を処理します。
hello.py
def application(environ, start_response): method = environ['REQUEST_METHOD'] path = environ['PATH_INFO'] if method=='GET' and path=='/': return handle_home(environ, start_response) if method=='POST' and path='/signin': return handle_signin(environ, start_response) ...を変更します
これは 2 つの URL、'/' と '/signin' を処理します
もちろん、このように書き続けることもできます...疲れていない場合。
上記の方法は面倒で時間がかかるため、高度なことを学びましょう:
flask
コードを見てください
from flask import Flaskfrom flask import request app = Flask(__name__)@app.route('/', methods=['GET', 'POST'])def home(): return '<h1>Home</h1>'@app.route('/signin', methods=['GET'])def signin_form(): return '''<form action="/signin" method="post"> <p><input name="username"></p> <p><input name="password" type="password"></p> <p><button type="submit">Sign In</button></p> </form>'''@app.route('/signin', methods=['POST'])def signin(): # 需要从request对象读取表单内容: if request.form['username']=='admin' and request.form['password']=='password': return '<h3>Hello, admin!</h3>' return '<h3>Bad username or password.</h3>'if __name__ == '__main__': app.run()
注意、これは単一のファイルです。
このスクリプトを分析してみましょう:
Flask は、Python のデコレータを通じて内部で URL を関数に自動的に関連付けます。
操作を開始した後、
'/' にアクセスすると、「HOME」という単語
'/signin' が表示されます。このとき、GET でアクセスすると、フォームに「admin」と「password」を入力し、「ログイン」をクリックします—>
「/signin」に POST 経由でアクセスしますが、表示されるのは「Hello, admin!」または「Bad username or password」です。
from flask import Flask, request, render_templateimport os app = Flask(__name__)@app.route('/', methods=['GET', 'POST'])def home(): path = '/' all_file = os.listdir(path) return render_template('home.html',all_file = all_file)if __name__ == '__main__': app.run()
{{ を HTML
home.html# に記述できることです。 ##
{% for i in all_file %} <a href="/page/{{ i }}">{{ i }}</a>{% endfor %}{% %} }}内に書かれているのは変数なので、最終的に複数のタグが生成され、そのタグの名前がディレクトリ名になります。
上記の基本的なチュートリアルでは、Liao Xuefeng について言及しています。
これで基礎が完成しました。次のステップは完成品です。
完成品
前回クロールした写真を使用して Web サイトを構築します。良いアイデアです!
ここで、.py スクリプトと同じディレクトリに静的ディレクトリを作成して、画像を保存します。 (.py が置かれているディレクトリの外に画像が配置されている場合、画像はリンクされません)#beautiful_pic.pyfrom flask import Flaskfrom flask import requestfrom flask import render_templateimport os app = Flask(__name__)#显示所有文件夹@app.route('/',methods=['GET','POST'])def list_all(): path = './static/mzitu/' all_pic = os.listdir(path) return render_template('welcome.html',all_pic = all_pic)#具体展示图片@app.route('/<path>',methods=['GET','POST'])def list_pic(path): #错误链接无法找到图片目录就提示错误链接 if(path not in os.listdir('./static/mzitu/')): return render_template('error.html') pic_path = './static/mzitu/' + path all_pic = os.listdir(pic_path) return render_template('pic.html',title = path,all_pic = all_pic)if __name__ == '__main__': #port为端口,host值为0.0.0.0即不单单只能在127.0.0.1访问,外网也能访问 app.run(host='0.0.0.0',port='2333')
welcome.html
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>欢迎来到福利页面</title></head><body> {% for i in all_pic: %} <a href="/{{i}}">{{i}}</a> <br><br> {% endfor %}</body></html>pic.html
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>{{ title }}</title></head><body> {% for i in all_pic %} <img src="./static/mzitu/{{title}}/{{i}}" alt="{{i}}"> <br> {% endfor %}</body></html>
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>出错了</title></head><body> 你要访问的页面不存在... <br> <a href="/">点此返回首页</a></body></html>
関連する推奨事項:
Eclipse PyDev Django Mysql による Python Web 開発環境の構築_MySQL
##初めてWebに参入 開発するにはphp、python、rubyどれを学べばよいでしょうか?
以上がシンプルな Web サイトを構築する方法を教えます: Python 開発 Web サーバーの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。