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

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

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

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

URL

URL(ユニフォームリソースロケータ)とは、インターネット上のリソース(Webページや電子メールの宛先等)を特定するための形式的な記号の並びの事を言う。

Python

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

HTML

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

Q&A

解決済

1回答

1667閲覧

Python(Flask)を使って『タスク管理アプリ』を作成したい!

Tomoya-Kaitsuka

総合スコア4

Flask

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

URL

URL(ユニフォームリソースロケータ)とは、インターネット上のリソース(Webページや電子メールの宛先等)を特定するための形式的な記号の並びの事を言う。

Python

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

HTML

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

0グッド

0クリップ

投稿2021/11/04 12:21

編集2021/11/04 12:24

やりたいこと
URL「http://127.0.0.1:5000/detail/1」を開いたときに、トップページの「Detail」をクリックすると、detail.htmlの画面に遷移して、タスクの詳細を表示させたい。

サイトに表示されるエラー

Not Found
The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again.

**Pythonのターミナルで起こってるエラー** C:\Users\TK\Desktop\TODO-APP\env\lib\site-packages\flask_sqlalchemy\__init__.py:872: FSADeprecationWarning: SQLALCHEMY_TRACK_MODIFICATIONS adds significant overhead and will be disabled by default in the future. Set it to True or False to suppress this warning. warnings.warn(FSADeprecationWarning( * Debugger is active! * Debugger PIN: 532-667-604 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit) 127.0.0.1 - - [04/Nov/2021 18:06:49] "GET /detail/1 HTTP/1.1" 404 - 127.0.0.1 - - [04/Nov/2021 18:06:53] "GET /detail/1 HTTP/1.1" 404 - 127.0.0.1 - - [04/Nov/2021 18:06:59] "GET / HTTP/1.1" 200 - 127.0.0.1 - - [04/Nov/2021 18:07:01] "GET /detail/2 HTTP/1.1" 404 - 127.0.0.1 - - [04/Nov/2021 18:12:25] "GET /detail/1 HTTP/1.1" 404 -

python

1 2# ファイル名「app.py」 3 4from datetime import datetime 5from flask import Flask, render_template, request, redirect 6from flask_sqlalchemy import SQLAlchemy 7 8app = Flask(__name__) 9app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:///todo.db" 10 11db = SQLAlchemy(app) 12 13class Post(db.Model): 14 15 16 id = db.Column(db.Integer, primary_key=True) 17 title = db.Column(db.String(30), nullable=False) 18 detail = db.Column(db.String(100)) 19 due = db.Column(db.DateTime, nullable=False) 20 21@app.route("/", methods=["GET","POST"]) 22 23def index(): 24 25 if request.method == "GET": 26 27 posts = Post.query.all() 28 return render_template("index.html", posts=posts) 29 else: 30 31 title = request.form.get("title") 32 detail = request.form.get("detail") 33 due = request.form.get("due") 34 35 36 due = datetime.strptime(due,"%Y-%m-%d") 37 38 new_post = Post(title=title,detail=detail,due=due) 39 40 41 db.session.add(new_post) 42 db.session.commit() 43 44 return redirect("/") 45 46 47@app.route("/create") 48def create(): 49 50 return render_template("create.html") 51 52if __name__ == "__main__": 53 54 app.run(debug=True) 55 56@app.route("/detail/<int:id>") 57 58 59def read(id): 60 post = Post.query.get(id) 61 return render_template("detail.html", post=post) 62

HTML

1 2<!-- ファイル名「base.html」--> 3 4 5<!DOCTYPE html> 6<html lang="en"> 7<head> 8 <meta charset="UTF-8"> 9 <meta http-equiv="X-UA-Compatible" content="IE=edge"> 10 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 11 <title>Document</title> 12 13 {% block head %}{% endblock %} 14</head> 15<body> 16 {% block body %}{% endblock %} 17</body> 18</html> 19

HTML

1 2<!-- ファイル名「index.html」--> 3 4{% extends "base.html" %} 5 6{% block body %} 7<h1>トップページ</h1> 8{% for post in posts %} 9 10<h2>タイトル : {{ post.title}}</h2> 11<p>期限 : {{ post.due.date()}}</p> 12 13<a href="detail/{{ post.id }}" role="button">Detail</a> 14{% endfor %} 15{% endblock %}

HTML

1 2<!-- ファイル名「detail.html」--> 3 4{% extends "base.html" %} 5 6{% block body %} 7<h2>{{ post.title }}</h2> 8<p>{{ post.detail }}</p> 9<p>{{ post.due.date() }}</p> 10{% endblock %}

HTML

1 2<!-- ファイル名「create.html」--> 3 4{% extends "base.html" %} 5 6{% block body %} 7<form action="/" method="POST"> 8 <label for="title">title</label> 9 <input type="text" name="title"> 10 <label for="detail">Detail</label> 11 <input type="text" name="detail"> 12 <label for="due">Due</label> 13 <input type="date" name="due" required> 14 <input type="submit" value="Create"> 15</form> 16{% endblock %}

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

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

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

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

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

guest

回答1

0

ベストアンサー

python

1@app.route("/detail/<int:id>") 2 3 4def read(id): 5 post = Post.query.get(id) 6 return render_template("detail.html", post=post)

この関数が一番下にあるのはなぜでしょうか?

おそらくapp.run(debug=True)より下にあるので関数が呼び出せていない気がします

投稿2021/11/04 13:13

Supernove

総合スコア1154

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

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

Tomoya-Kaitsuka

2021/11/04 13:47

解決しました!本当に助かりました。ありがとうございます!!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問