プログラミング

【Python】別のファイルを読み込んでみよう

投稿日:

Pythonでは「別のpyファイル」を読み込んで、そこに記述してある「変数」や「関数」などを使うことができるようです。

今回はその「インポート方法」を見ていきましょう。

別のpyファイルをインポートしてみよう

今回試していく「pyファイル」は「Flask-WTF」を使って「入力フォーム」を作成した時のものを使っていきます。

「Flask-WTF」についてはこちら。

from flask import Flask, render_template
from flask_wtf import FlaskForm
from wtforms import StringField, PasswordField
from wtforms.validators import InputRequired, Length, AnyOf

app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret'

class LoginForm(FlaskForm):
   username = StringField('ユーザー名', validators=[InputRequired(), Length(min=8, max=16, message='8文字以上16文字以下で入力してください')])
   password = PasswordField('パスワード', validators=[InputRequired(), AnyOf(values=['password'], message='パスワードが違います')])

@app.route('/form', methods=['GET', 'POST'])
def form():
   form = LoginForm()
   if form.validate_on_submit():
      return '<h1>ユーザー名は {}. パスワードは {}.'.format(form.username.data, form.password.data)
   return render_template('form.html', form=form)

if __name__ == "__main__":
   app.run(debug=True)

このコードを2つの「pyファイル」に分けて使ってみましょう。

今回の分け方

  1. 「main.py」メインの部分(Flask)
  2. 「forms.py」フォームの部分(Flask-WTF)

こんな感じで進めていきます。

pyファイルを分けてみよう

1.main.py

from flask import Flask, render_template

app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret'

@app.route('/', methods=['GET', 'POST'])
def form():
   form = LoginForm()
   if form.validate_on_submit():
      return '<h1>ユーザー名は {}. パスワードは {}.'.format(form.username.data, form.password.data)
   return render_template('form.html', form=form)

if __name__ == "__main__":
   app.run(debug=True)

2.forms.py

from flask_wtf import FlaskForm
from wtforms import StringField, PasswordField, HiddenField, SubmitField
from wtforms.validators import InputRequired, Length, AnyOf

class LoginForm(FlaskForm):
   username = StringField('ユーザー名', validators=[InputRequired(), Length(min=8, max=16, message='8文字以上16文字以下で入力してください')])
   password = PasswordField('パスワード', validators=[InputRequired(), AnyOf(values=['password'], message='パスワードが違います')])

単純に分けてみるとこうなります。
しかしこのままでは動作しませんね。

別のファイルからインポートしよう

今回の場合は「forms.py」ファイルから「LoginForm」クラスをインポートしています。

from flask import Flask, render_template

-------------------------------------------

from forms import LoginForm 

-------------------------------------------

app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret'

@app.route('/', methods=['GET', 'POST'])
def form():
   form = LoginForm()
   if form.validate_on_submit():
      return '<h1>ユーザー名は {}. パスワードは {}.'.format(form.username.data, form.password.data)
   return render_template('form.html', form=form)

if __name__ == "__main__":
   app.run(debug=True)

こうすることで「form」関数内の「form = LoginForm()」が成り立ちますね。

実行してみよう

「VSCode」で実行していきます。

「入力フォーム」に入力してみます。

問題なく動作しているようですね。

まとめ

今回は別の「pyファイル」の読み込みをしてみました。
これを使えば一度書いたコードはどこにでも使えそうですね。

今回は「同じ階層」のファイルをインポートしたのですが「別の階層」だとどうなるのでしょうか。
調べてみたいと思います。
それではまた。

-プログラミング
-

執筆者:


comment

メールアドレスが公開されることはありません。

関連記事

【Python】リサイズした画像をExcelに貼ってみよう

前回は、画像を「openpyxl」でExcelシートに貼り付けることができました。今回は「OpenCV」を使って、リサイズしてから画像を貼り付けてみたいと思います。 リサイズした画像を貼ってみよう O …

【Python】画像のサイズを変えてみよう

前回は「OpenCV」を使って、画像を読み込ませてみました。今回は、読み込んだ画像のサイズを変えてみたいと思います。 画像のサイズを変えてみよう 前回のコードに追記する形で、進めていきます。 前回の「 …

PHP開発環境

今回は実際にXAMPPをインストールし、PHPの開発環境を構築していきます。 XAMPPとは X:Xross-PlatformA:ApacheM:MariaDBP:PHPP:Perlそれぞれの頭文字を …

HTMLの要素

ほとんどのサイトがHTMLという言語で出来ており複数のコードによって作られていましたね。今回はコードの中身で使用される要素というものについて書いていきます。 要素の役割 コードを記述するうえで必要な知 …

【Python】クラスってなんだ?

Pythonを学ぶ上で「クラスってなんだ?」と思ったことはありますか?調べてみると、あるものに例えられていて分かりやすいものがありました。今回はそちらを参考に「クラス」とはなにかを紹介したいと思います …

YouTube