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

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

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

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

HTTP

HTTP(Hypertext Transfer Protocol)とはweb上でHTML等のコンテンツを交換するために使われるアプリケーション層の通信プロトコルです。

ログイン

ログインは、ユーザーがコンピューターシステムにアクセスするプロセスの事を呼びます。

Python

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

Q&A

1回答

1577閲覧

【Flask】ユーザー作成方法が知りたいです。

退会済みユーザー

退会済みユーザー

総合スコア0

Flask

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

HTTP

HTTP(Hypertext Transfer Protocol)とはweb上でHTML等のコンテンツを交換するために使われるアプリケーション層の通信プロトコルです。

ログイン

ログインは、ユーザーがコンピューターシステムにアクセスするプロセスの事を呼びます。

Python

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

0グッド

0クリップ

投稿2020/07/25 01:35

前提・実現したいこと

Flask のチュートリアルを進めています。
(参考ページ)https://study-flask.readthedocs.io/ja/latest/04.html#id3

ログイン機能の実装部分を作成したのですが、管理ユーザーを作成していなかったため、ログインができない状況です。
Queryを実行し、ユーザーの作成を試みたのですがうまくいきませんでした。

・管理ユーザーの作成方法が知りたいです。

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

下で説明しているコマンド操作で作成したユーザー情報を入力した後の HTTP 情報です。

127.0.0.1 - - [25/Jul/2020 10:09:30] "POST /login HTTP/1.1" 200 -

該当のソースコード

python

1from sqlalchemy.orm import synonym 2from werkzeug.security import check_password_hash, generate_password_hash 3 4from flaskr import db 5 6 7class User(db.Model): 8 __tablename__ = 'users' 9 id = db.Column(db.Integer, primary_key=True) 10 name = db.Column(db.String(100), default='', nullable=False) 11 email = db.Column(db.String(100), unique=True, nullable=False) 12 _password = db.Column('password', db.String(100), nullable=False) 13 14 def _get_password(self): 15 return self._password 16 def _set_password(self, password): 17 if password: 18 password = password.strip() 19 self._password = generate_password_hash(password) 20 password_descriptor = property(_get_password, _set_password) 21 password = synonym('_password', descriptor=password_descriptor) 22 23 def check_password(self, password): 24 password = password.strip() 25 if not password: 26 return False 27 return check_password_hash(self.password, password) 28 29 @classmethod 30 def authenticate(cls, query, email, password): 31 user = query(cls).filter(cls.email==email).first() 32 if user is None: 33 return None, False 34 return user, user.check_password(password) 35 36 def __repr__(self): 37 return u'<User id={self.id} email={self.email!r}>'.format( 38 self=self) 39 40 41class Entry(db.Model): 42 __tablename__ = 'entries' 43 id = db.Column(db.Integer, primary_key=True) 44 title = db.Column(db.Text) 45 text = db.Column(db.Text) 46 47 def __repr__(self): 48 return '<Entry id={id} title={title!r}>'.format( 49 id=self.id, title=self.title) 50 51def init(): 52 db.create_all() 53 54

試したこと

$ python3 >>> from flaskr.models import User, db >>> User.query.all() [] >>> user = User(id=1, name='root', email='root1', _password='password') >>> db.session.add(user) >>> db.session.commit() >>> User.query.all() [<User id=1 email='root1'>]

上記で、ユーザーの作成ができていると認識してます。

初めての質問投稿で、至らぬ点があるかもしれないですがよろしくお願い致します。

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

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

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

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

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

guest

回答1

0

記載の内容で作成できていると思います。
質問内容がよくわからないのですが、以下操作を行ってもsession.user_idが入っていないため、見えないということでしょうか?

  1. login.htmlを表示
  2. Emailにroot1, Passwordにpasswordを入力し、Loginを押す。
  3. show_entries.htmlが表示され、 {% if session.user_id %} 部分が表示されない?

投稿2020/07/27 01:32

FiroProchainezo

総合スコア2387

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

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

退会済みユーザー

退会済みユーザー

2020/07/27 04:59

ご回答ありがとうございます! > 以下操作を行ってもsession.user_idが入っていないため、見えないということでしょうか? > login.htmlを表示 > Emailにroot1, Passwordにpasswordを入力し、Loginを押す。 > show_entries.htmlが表示され、 {% if session.user_id %} 部分が表示されない? まさに!! まさにその通りです..。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問