flashkフレームカスタムurl変換器操作詳細
2925 ワード
本明細書の例は、flashkフレームのカスタムurl変換器について述べる。皆さんに参考にしてあげます。具体的には以下の通りです。
url変換器とは?
urlの規制を指定して、urlに対して一定の制限をすることができます。
独自のurl変換器
前のブログを参照してください。flask Curlとリダイレクト詳細
カスタムurl変換器
まず、需要に応じてコードを書く必要があります。ここでは、urlは電話番号のフォーマットを満たす必要があると仮定して、私たちの関数ビューにアクセスできます。例えば、このようなurl:127.1.0.1:5000/user/<電話番号>/
上のtelコンバータでは、ルールを書いただけです。また、urlをカスタマイズして、私達のビュー関数に送ることもできます。
この時は私達のto_に使います。pythonとto_url方法です
需要:入力されたurlが127.1.0.1/a+b/という場合、ビュー関数で入手したい時は直接リスト['a'、'b']で、毎回自分で変換しなくてもいいです。私達が使う時はurl_を使います。forパラメータを入力した時、私たちは直接に「'a'、'b'」に伝えます。直接にa+bという形にもなります。
コードは以下の通りです
まとめ:カスタムurl変換器は、BaseConverterというクラスを引き継ぐ必要があります。 urlのルールは、レゲックスという属性(正規表現を書く)を書き換える必要がある ト_python方法は、urlにおけるパラメータがビュー関数に入る前に、パラメータを処理することができる である。ト_url方法はurl cuuを使っています。forの場合は、入ってきたパラメータを処理し、url に変換します。最後に、必ずカスタムのurl変換器をap.url_に追加します。map.co nvertersにおける 本稿で述べたいのですが、flashkフレームに基づくPythonプログラムの設計に役立ちます。
url変換器とは?
urlの規制を指定して、urlに対して一定の制限をすることができます。
独自のurl変換器
前のブログを参照してください。flask Curlとリダイレクト詳細
カスタムurl変換器
まず、需要に応じてコードを書く必要があります。ここでは、urlは電話番号のフォーマットを満たす必要があると仮定して、私たちの関数ビューにアクセスできます。例えば、このようなurl:127.1.0.1:5000/user/<電話番号>/
# BaseConverter
from werkzeug.routing import BaseConverter
from flask import Flask
app = Flask(__name__)
# , BaseConverter
class TelphoneConverter(BaseConverter):
# url regex , regex,
# 1 , 3458 , 9
regex = '1[3458]\d{9}'
#
# 'tel': ,
# 'TelephoneConverter': 'tel' , , 'tel' , regex
app.url_map.converters['tel'] = TelephoneConverter
# tel
@app.route('/user/<tel:telephone>')
def tel_demo(telephone):
return " :%s" % telephone
その後、私たちはアドレステストを入力することができます。もし私たちが入力した規則が私たちの正規表現を満たしていないなら、404ページが表示されます。上のtelコンバータでは、ルールを書いただけです。また、urlをカスタマイズして、私達のビュー関数に送ることもできます。
この時は私達のto_に使います。pythonとto_url方法です
需要:入力されたurlが127.1.0.1/a+b/という場合、ビュー関数で入手したい時は直接リスト['a'、'b']で、毎回自分で変換しなくてもいいです。私達が使う時はurl_を使います。forパラメータを入力した時、私たちは直接に「'a'、'b'」に伝えます。直接にa+bという形にもなります。
コードは以下の通りです
from flask import Flask
from flask import url_for
from werkzeug.routing import BaseConverter
class ListConverter(BaseConverter):
# to_python ,value url , url ,
# ,
def to_python(self,value):
return value.split('+')
# to_url ,value url_for , , url
def to_url(self,value):
return "+".join(value)
#
app.url_map.converters['list'] = ListConverter
#
@app.route('/index/')
def index():
return url_for('board',boards=['a','b'])
@app.route('/<list:boards>/')
def demo(boards):
print(boards)
return 'boards is ' + str(boards)
そしてプロジェクトを開始します。127.1.0.1:5000/index/を訪問すると、私たちはそれを見ることができます。url関数が働く。私たちは閲覧中に127.01:5000/a+b/を入力すると、リストが見えます。これはつまり私達のto_です。pythonが働きました。まとめ: