1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[Python]Cerberusを用いたバリデーションの作り方と、外部ライブラリの導入

Last updated at Posted at 2021-04-01

#書くこと
Pythonのオープンソースライブラリとして利用可能な、Cerberusを用いたバリデーション機能の実装の方法。

公式ドキュメント:https://docs.python-cerberus.org/en/stable/index.html
github: https://github.com/pyeve/cerberus

##環境
Python 3.6.5

##導入
まずは、導入を行っていきます。

###インストール

Cerberus(ケルベロス)は、外部ライブラリに属します。
なのでまずは、pipコマンドでcerberusをインストールしていきます。

pip install cerberus

ちなみに、
####pipコマンドは

外部ライブラリをインストールするために主に用いられるコマンドです。

####外部ライブラリとは
先人たちの知恵が詰まったコードの宝庫である
The Python Package Index (PyPI)
のことです。

###import
次に、インストールしたライブラリは、ソースコード内でimport(輸入)してあげる必要があります。
本題に入る前に礼を示します。例えば、**元々組み込まれているライブラリの中から、random**を輸入する時はこのように記述します。

random.py
#randomライブラリをimport
import random

#randomライブラリの"randint"メソッドを利用
random_number = random.randint(0,2)

####これが外部ライブラリになっても、基本は同じです。

今回のCerberusからは、Validatorクラスをインポートしたいと思います。クラスのインポートには、from ライブラリ名 import クラス名と記述します。

validate.py
#インストールしたcerberusライブラリから、Validatorクラスをimport
from cerberus import Validator

これで、導入は終了です。

##実際の利用
ここまでで、Cerberusの導入が終了しました。

ここからは一番基本的な書き方と、実際に利用した例を述べていきます。

###基本の書き方

validate.py
from cerberus import Validator

#例として、"name"は文字列でなければならないというバリデーションを作成します。
schema = {'name': {'type': 'string'}}
#importしたValidatorクラスのインスタンスvを生成し、バリデーションの情報を詰め込みます。
v = Validator(schema)

#試しに"name": "john doe"でTrueになるか確かめてみます。
document = {'name': 'john doe'}
#この記法で、documentがバリデーションの条件を満たしているかの判断をTrue or Falseで返します。
v.validate(document)
#→ True

pythonではdictと呼ばれるkey: valueの形でバリデーションを作成することができます。

文字列だけでなく、空白や真偽値を確かめることもできます。
詳しくは、以下の記事をご覧ください。

###名前を必ず入力させる仕組みを作成
名前を入力させる際に、空欄を許可しないバリデーションを作成しました。

validate.py
from cerberus import Validator

#バリデーションを作成
name_rule = {
  "name": {
    "empty": False
  }
}
#Validatorクラスより、name_ruleの情報が入ったインスタンスを生成
v = Validator(name_rule)

#名前を入力
your_name = input()

#your_nameが空である限り、処理を続ける。
while v.validate({"name": your_name}) == False:
    print("名前を入力してください")
    your_name = input()

print(your_name + "さん、ようこそ!")

このようにして、バリデーションの機能を利用して、必ず名前を入力させる仕組みを作成することができました。

#最後に
最後まで読んでいただき、ありがとうございます。
ソースコード、記事の書き方について「もっとこうしたほうがいいよ!」というご意見、「そこどうなっているの?」というご質問など、お待ちしております。

##参考文献

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?