質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
Flask

FlaskはPython用のマイクロフレームワークであり、Werkzeug・Jinja 2・good intentionsをベースにしています。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

2728閲覧

AttributeErrorが解決しない。

ogiogimaru

総合スコア39

Flask

FlaskはPython用のマイクロフレームワークであり、Werkzeug・Jinja 2・good intentionsをベースにしています。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/06/19 08:37

編集2021/06/19 09:14

FlaskでWeb制作の勉強をしていたのですが、クライアント側からファイルをサーバー側にアップロードしようとしたところ以下のエラーに見舞われてしまいました。

AttributeError: 'function' object has no attribute 'upload_file'

一応変数名や関数名を間違えないようにコピペしていったのですが、どこに問題があるのかわかりません。何卒ご教授お願いいたします。

以下がプログラムです。同階層のupload.pyを呼び出し、中の関数upload_fileを呼び出しています。

from flask import Blueprint, render_template, request, flash from flask_login import login_required, current_user from . import upload @views.route('/upload', methods=['GET', 'POST']) def upload(): if request.method == 'POST': upload_files = request.files.getlist('upload_files') upload.upload_file(upload_files) # ここが問題のところ return render_template("upload.html", user=current_user) return render_template("upload.html", user=current_user)

以下はupload.pyです。アップロードされたファイルのなかの単語を出力したいと考えていました。

def insert(file_contents, file_name): query_list = set(query for query in file_contents.split() if not query.endswith('.html')) for query in query_list: print(query) def upload_file(upload_files): for filename in upload_files: file_contents = filename.stream.read().decode("utf-8") insert(file_contents, file_name)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

関数には、 'upload_file' というアトリビュートはない、とおっしゃってます。

def upload():

わざわざこの関数を作って、そこでなにをしてるつもりなんでしょうか

投稿2021/06/19 09:11

編集2021/06/19 09:12
y_waiwai

総合スコア88024

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ogiogimaru

2021/06/19 09:18

失礼いたしました。1つ目のコードに足りない部分がありました。Webページからファイルを取り込み、それを処理用の関数であるupload.pyに送る関数です。upload()自体は画面の変化に専念させたいと考え、処理は別のモジュールに行わせたいと思っていました。
y_waiwai

2021/06/19 09:19

んでその関数にupload_fileってのがないというエラーなんですが
y_waiwai

2021/06/19 09:24

ああ、 > from . import upload のつもりでしたか。 関数名でこいつが上書きされてるので、関数名を変える必要があります
ogiogimaru

2021/06/19 09:37

無事解決いたしました!ありがとうございます! 他のところから呼んでる関数と自分が同じ名前だったらそりゃおかしなことになりますね…。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問