以下のコードで、
datetime.strptime(due, '%Y-%m-%d')
の箇所がどうしてもエラーとなってしまいます。
datetime.strptime(文字列, 'フォーマット')という文法はあっているようですが、原因が分からない状況です。
エラーの内容としては、「TypeError: strptime() argument 1 must be str, not None」と表示され、
第一引数が文字列である必要があるとのことです。
どなたかご教示の程、よろしくお願い致します。
app.py
python
1from datetime import datetime 2from flask import Flask, render_template, request, redirect 3from flask_sqlalchemy import SQLAlchemy 4 5app = Flask(__name__) 6app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///todo.db' 7app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False 8db = SQLAlchemy(app) 9 10class Post(db.Model): 11 id = db.Column(db.Integer, primary_key=True) 12 title = db.Column(db.String(30), nullable=False) 13 detail = db.Column(db.String(100)) 14 due = db.Column(db.DateTime, nullable=False) 15 16@app.route('/', methods=['GET', 'POST']) 17def index(): 18 if request == 'GET': 19 posts = Post.query.all() 20 return render_template('index.html', posts=posts) 21 else: 22 title = request.form.get('title') 23 detail = request.form.get('detail') 24 due = request.form.get('due') 25 26 # エラーとなる。 27 due = datetime.strptime(due, '%Y-%m-%d') 28 new_post = Post(title=title, detail=detail, due=due) 29 30 db.session.add(new_post) 31 db.session.commit() 32 33 return redirect('/') 34 35@app.route('/create') 36def create(): 37 return render_template('create.html') 38 39if __name__ == '__main__': 40 app.run(debug=True) 41
create.html
html
1{% extends "base.html" %} 2 3{% block content %} 4 5<form action="/" method="POST"> 6 <label for="title">Title</label> 7 <input type="text" name="title"> 8 <label for="detail">Detail</label> 9 <input type="text" name="Detail"> 10 <label for="due">Deu</label> 11 <!-- required 日付設定 --> 12 <input type="date" name="due" required> 13 <input type="submit" value="Create"> 14</form> 15 16{% endblock %} 17 18 19 20![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2023-05-02/0eb24249-e69a-4c93-a97c-a3a7e5112b15.png)
回答3件
あなたの回答
tips
プレビュー