0

私はPythonでWebサーバー+ Webサイトを作成しています.現在、ログイン値が正しいかどうかを確認する方法を考えています. 以前のテストでは、次のコードを使用しました。

def checkUser(username, password): #<-- input values go in here
        site_usernames = ["admin", "username1", "username2"]
        site_passwords = ["admin", "password1", "password2"]
        site_couples = {"admin":"admin", "username1":"password1", "username2":"password2"}
        not_counter = 0
        while True:
            if username in site_usernames:
                if password in site_passwords:
                    for key in site_couples:
                        if (username == key) and (password == site_couples[key]):
                            print("User %s logged in!" % username)
                            return True
                        else:
                            not_counter = not_counter + 1
                            if not_counter > 10:
                                print("User failed login with accountname: %s" % username)
                                return False
                                break
                            else:
                                continue
                else:
                    pass_exists = False
                    break
            else:
                user_exists = False
                break

私が見た限りでは、データベースから 2 つの列を辞書として返すことはできません。1つの列をリストとして取得できたので、それを使用する予定です。

したがって、私の新しいコードでは、次のようになります。

  • データベースにあるユーザー名のリスト

  • データベース内のエンコードされたパスワードのリスト

次のことを確認する認証機能を作成したいと思います。

  • ユーザー名がデータベースに存在する場合:
  • パスワードがデータベースに存在する場合:
  • 入力されたユーザー名:パスワードの組み合わせが、データベース内のすべての既存のユーザー名:パスワード値に存在する場合:
  • すべてのチェックが成功した場合は True を返します

問題は、そのようなことを管理するのが非常に難しいことです。サンプル コードでわかるように、2 つのリストと dict があり、すべて事前定義されています。私はそれらのものをその場で作成したいと思っています。実際に助けが必要なのは、ユーザー名とパスワードの辞書のペアを作成する方法だけです。どうすればそんなことをするでしょうか?zip()辞書ではなくタプルを作成します。

4

1 に答える 1

1
In [1]: users = ["user1", "user2"]

In [2]: pws = ["password", "12354"]

In [3]: dict(zip(users, pws))
Out[3]: {'user1': 'password', 'user2': '12354'}
于 2013-07-28T19:14:51.023 に答える