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

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

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

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

Python

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

3回答

12994閲覧

理解不能のunexpected indent

Pablito

総合スコア71

Flask

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

Python

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2019/06/17 07:57

編集2019/06/17 08:07

前提・実現したいこと

web applicationを作成し、
ログを閲覧したいと思っています。
そこでFlaskを用い、PythonとHTMLのテンプレートを使って
ログ閲覧機能を実装中に以下のエラーメッセージが発生しました。

発生している問題・エラーメッセージ

File "Hello.py", line 36
return render_template('viewlog.html',
^
IndentationError: unexpected indent

該当のソースコード

Python

1from flask import Flask, render_template, request, escape 2from vsearch import search4letters 3 4app = Flask(__name__) 5 6def log_request(req: 'flask_request', res: str) -> None: 7 with open('vsearch.log', 'a')as log: 8 print(req.form, req.remote_addr, req.user_agent, res, file=log, sep='|') 9 10@app.route('/search4', methods=['POST']) 11def do_search() -> 'html': 12 phrase = request.form['phrase'] 13 letters = request.form['letters'] 14 title = 'Results' 15 results = str(search4letters(phrase, letters)) 16 log_request(request, results) 17 return render_template('results.html', 18 the_title=title, 19 the_phrase=phrase, 20 the_letters=letters, 21 the_results=results,) 22@app.route('/') 23@app.route('/entry') 24def entry_page() -> 'html': 25 return render_template('entry.html', 26 the_title='Welcome to search4letters of the website version!') 27 28@app.route('/viewlog') 29def view_the_log() -> 'html': 30 contents = [] 31 with open('vsearch.log') as log: 32 for line in log: 33 contents.append([]) 34 for item in line.split('|'): 35 contents[-1].append(escape(item)) 36 titles = ('form data', 'remote address', 'user agent', 'results') 37 return render_template('viewlog.html', 38 the_title='view the logs', 39 the_row_titles=titles, 40 the_data=contents,) 41if __name__ == '__main__': 42 app.run(debug=True) 43 44

試したこと

インデントが原因だと思い、
当該部分を書き直し、
不要な改行がないように
気を付けましたが、
直りません。

プログラミング初心者で
初歩的な質問かもしれませんが、
よろしくお願いいたします。

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

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

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

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

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

azuapricot

2019/06/17 08:06

index と インデント 全く違うのでお勉強しなおしてください
azuapricot

2019/06/17 08:06

しかもPythonでここわかってないのは致命的です
Pablito

2019/06/17 08:09

すいません。 Indentでした。 azuapricotさんは、このunexpected indentの 直し方も分かりますか?
KojiDoi

2019/06/17 08:18

> 当該部分を書き直し、 > 不要な改行がないように その書き直した後のソースを示してください。あなたが不要ではないと思っている改行に問題があるのでしょう。
tiitoi

2019/06/17 08:18

return render_template のインデントは2つでなく1つではないでしょうか。
guest

回答3

0

titles = ('form data', 'remote address', 'user agent', 'results') return render_template('viewlog.html', the_title='view the logs', the_row_titles=titles, the_data=contents,)

質問のプログラムの上記部分ですが、
titlesで始まる行と、returnで始まる行のインデントを変える(returnの行のほうのインデントを深くする)理由がありません。

pythonでインデントを深くするのは、defで関数を定義するとき、ifで条件分岐するとき、などの場合で、(titleで始まる行のような)代入文では、インデントが変わりません。

titles = ('form data', 'remote address', 'user agent', 'results') return render_template('viewlog.html', the_title='view the logs', the_row_titles=titles, the_data=contents,)

のように変更すれば、質問のエラーは解消するはずです。
試してみてください。

投稿2019/06/17 08:31

coco_bauer

総合スコア6915

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

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

Pablito

2019/06/18 01:36

ありがとうございます! 解決いたしました!
guest

0

自己解決

自分が見ていたよりも、
はるかに下の行に、
不要なインデントが見つかりました。
皆様ありがとうございました。

投稿2019/06/17 08:31

Pablito

総合スコア71

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

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

0

なんか中途半端で回答が送信されてたみたいなので修正しますが

indexではなくindentです。
「unexpected indent」でググりましょう。

と書いたつもりでしたが、意図は伝わってたようですね。

不要な改行がないように
気を付けましたが、
直りません。

インデントは改行ではありません。字下げです。

投稿2019/06/17 08:04

編集2019/06/17 08:25
gentaro

総合スコア8949

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問