1. Installation de l'environnement virtuel
En général, une fois python installé, il existe dans l'environnement global. Si le projet en a besoin, vous devez équiper le projet de son propre environnement python, donc cet environnement est un environnement virtuel. La configuration de l'environnement virtuel est la suivante
#1、pipenv安装
pip install pipenv
#2、在E盘创建一个目录,将新建的系统环境变量WORKON_HOME指向创建的目录
#3、dos切向E盘中创建的目录,进行虚拟环境安装(第一次为安装,后续为进入虚拟环境)
pipenv shell
#4、虚拟环境搭建完成后,会自动进入虚拟环境
#5、退出虚拟环境
exit
#6、删除整个环境
pipenv --rm
Remarque: une fois l'environnement virtuel créé à la troisième étape, le fichier Pipfile apparaît dans le dossier de répertoire créé sur le disque E
[[source]]
name = "pypi"
url = "https://pypi.org/simple" //指定国内pip源,不然pip其他包的时候很慢
verify_ssl = true
[dev-packages] //开发环境
[packages] //生产环境
[requires] //python版本
python_version = "3.6"
Deux, flacon
# 从flask框架中导入Flask类
from flask import Flask
# 传入__name__初始化一个Flask实例
app = Flask(__name__)
# app.route装饰器映射URL和执行的函数。这个设置将根URL映射到了hello_world函数上
@app.route('/')
def hello_world():
return 'Hello World!'
if __name__ == '__main__':
# 运行本项目,host=0.0.0.0可以让其他电脑也能访问到该网站,port指定访问的端口。默认的host是127.0.0.1,port为5000。可以开启debug模式
app.run(host='0.0.0.0', port=9000, debug=True)
2.1 URL et vue
2.1.1 Le type de passage de paramètre peut être défini dans route
from flask import Flask
app = Flask(__name__)
@app.route('/<aid>/')
def index(aid):
return f'这是第{aid}个'
Vous pouvez ajouter des restrictions à ce qui précède
- chaîne: par défaut.
- int: Chirurgie plastique. <int: aid>
- float: type à virgule flottante. <float: aide>
- chemin: similaire à la chaîne. Mais la barre oblique <path: aid> peut être passée dans l'url
- uuid: ne jamais ré-encoder, souvent utilisé pour l'ID
- any: Vous pouvez spécifier plusieurs <any (article, blog): aid>
2.1.2 Le mode de requête HTTP peut être spécifié dans la route
obtenir une demande de
poste
2.1.3 url_for et redirection
Les avantages de la méthode url_for sont les suivants:
1. Optimiser le saut, la modification d'adresse dans la route n'affecte pas le saut, tant que la méthode cible ne change pas
2. La fonction url_for () échappera quelques caractères spéciaux et chaînes Unicode. Ces choses le feront automatiquement pour nous
from flask import Flask, url_for, redirect
app = Flask(__name__)
@app.route('/login/<aid>/')
def login(aid):
return f'login{aid}'
@app.route('/name_load/')
def name_load():
return redirect(url_for("login",aid=2))
2.1.4 Réponse
La réponse de retour est similaire à la chaîne de retour.
Il existe plusieurs
@app.route('/')
def s_root():
#return '第一个页面'
#return Response('first page')
#设置状态码
#return Response(response=TUP[0],status=666)
#返回元组形式
#return TUP[0],404
#使用make_response,此函数还能夹杂cookie,header
return make_response(TUP[0])
2.2 Voir avancé
2.2.1 Tentatives de classe standard
Hériter de views.View, remplacer la méthode dispatch_request et renvoyer le contenu à l'affichage dans la méthode.
from flask import Flask
from flask.views import View
#创建一个Flask对象
app = Flask(__name__)
#创建一个视图类
class DemoView(View):
#dispatch_request此方法必须重写,否则丢出raise异常
def dispatch_request(self):
return '标准类视图'
#定义规则
app.add_url_rule('/',view_funv=DemoView('ViewDemo'))
if __name__ == '__main__':
app.run(debug=True, port=8000)
2.2.2 Vue basée sur la méthode HTTP
Hériter de la classe views.MethodView pour compiler des méthodes telles que get et post
@ app.route ('/', methods ['GET', 'POST']) version avancée
from flask import Flask, render_template, request
from flask.views import MethodView
#创建Flask对象
app = Flask(__name__)
#创建一个类,继承MethodView
class GetPostDemo(MethodView):
#get方法
def get(self):
return render_template('login.html')
#post方法,将接收到的数据进行比对
def post(self):
name = request.form.get('name')
password=request.form.get('password')
if name == 'kml' and password == '123':
return self.SuccessDemo()
else:
return self.get()
#post中接收内容,若错误,跳转至FormDemo.html
def SuccessDemo(self):
return render_template('FormDemo.html')
app.add_url_rule('/',view_func=GetPostDemo.as_view('GetPost'))
if __name__ == '__mian__':
app.run(debug=True, port=8001)
2.3 Plan directeur
Le plan peut rationaliser la structure, faciliter la division du travail et l'entretien ultérieur
Comme le montre la figure ci-dessus, les instructions sont les suivantes:
1. Créez un dossier
Blueprint 2. Blueprintmain.py est la vue principale, blueprintDemo.py est la vue Blueprint
Description du plan directeur
from flask import Blueprint, render_template
from flask.views import View
#创建Blueprint对象
#第一个参数:name
#第二个参数:import name
#template_folder,此函数设定表示。当主templates中文件不存在时,将在蓝图中的templates文件夹中寻找
#url_prefix='/admin',此设定表示,若需要浏览蓝图中的视图,网址为xxx/admin/蓝图中的路由定义
bp = Blueprint('blueprintdemo', __name__, template_folder='templates')
#定义demo类,继承View类
class demo(View):
#需重写dispatch_request
def dispatch_request(self):
return render_tempalate('blueprint_demo.html')
#定义路由
bp.add_url_rule('/', view_func=demo.as_view('demo'))
Description de la vue principale
from flask import Flask
from blueprint import blueprintDemo
#创建Flask对象
app = Flask(__name__)
#将蓝图注册到主视图
app.register_blueprint(blueprintDemo.bp)
if __name__ == '__main__':
app.run(debug=True, port=10000)
2.4 Sous-domaine
Les sous-domaines sont généralement mis en œuvre par le biais de plans. SERVER_NAME doit être configuré dans la vue principale. Le Blueprint du Blueprint ajoute le paramètre sous-domaine, qui représente le nom du sous-domaine. Configuration de l'hôte à nouveau
Description du plan directeur
from flask import Blueprint, render_template
from flask.views import View
bp = Blueprint('blueprintdemo', __name__, template_folder='templates', subdomain='kk')
@bp.route('/')
def index():
return render_template('blueprint_demo.html')
Description de la vue principale
from flask import Flask
from blueprint import blueprintDemo
app = Flask(__name__)
#配置服务启动名称
app.config['SERVER_NAME'] = 'keminglang.com:10000'
app.register_blueprint(blueprintDemo.bp)
if __name__ == '__main__':
app.run(debug=True, port=10000)
fichier hosts pour configurer DNS
127.0.0.1 keminglang.com:10000
127.0.0.1 kk.keminglang.com:10000