プログラミング

【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

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

Anaconda(アナコンダ)について

Pythonを学習していくにあたって様々な用語を目にします。今回はその1つである、Anacondaについて触れていきます。 Anacondaとは AnacondaはPythonが入っているのは勿論のこ …

【Python】スクレイピングしてみよう

Pythonを学習する教材として「スクレイピング」に挑戦していきたいと思います。今回は使用していくツールと使い方を紹介します。 スクレイピングとは 「スクレイピング」とは、WEBデータを抽出し、必要な …

【HTML】iframeタグで動画を埋め込む

会社のイントラで「frameタグ」を使用していたんですが、今はもう廃止されているんですね。その代替えとして「iframeタグ」というものがあったので紹介します。今回は、自分の好きな動画をWEBページに …

【Python】ログイン機能を作る「Flask-Login」⑨

「ログイン機能を作る」の【Part9】をやっていきます。前回は「新規アカウント作成」の「入力フォーム」と「バリデーション」を作りました。今回は残りの「テンプレートの作成(entry.html)」と「ア …

「IT用語」OSの役割とは?

「OSってなんだ?」に引き続きOSの役割についてみていこうと思います 前回の記事はこちら 【IT用語】OSってなんだ? 「OSが入っていないコンピューターは動作しない」ことと「いろいろなOSがあるとい …

YouTube