プログラミング

【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

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

関連記事

HTMLで出来ること

今回はプログラミングを学ぶ上で最初に通る道であろうHTMLについてです。 プログラミング入門 プログラミング言語は様々ありますがWEBページを作るうえで使用されるのがHTMLというものです。このページ …

【Python】Flaskのフォルダ構成

「Flask」でアプリを作成する際に、知っておきたいフォルダ構成を紹介します。 Flaskでアプリを作成してみよう 「Flask」を勉強し始めて、1か月が経過しました。この1カ月で学んだ「Flask」 …

【Python】ANACONDA NAVIGATORを使ってみよう

今回は「ANACONDA NAVIGATOR」でライブラリのインストール方法を紹介します。 ANACONDA NAVIGATORを使ってみよう 「ANACONDA NAVIGATOR」を使えば、簡単に …

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

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

【Python】グラフを作成してみよう

Pythonでは、グラフを作成することも出来ます。今回は、実際にグラフの作り方を見ていきたいと思います。 Pythonでグラフを描いてみよう Pythonでグラフを作成するには「matplotlib」 …

YouTube