Skip to content

kons16/Wani

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

72 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Wani

WSGIの仕様に沿ったWebフレームワークです。

Wani サンプル

from wani import Wani, Response

app = Wani()


@app.route("/", ["GET"])
def hello(request):
    return Response("Hello, Wani")


if __name__ == "__main__":
    app.run()

ブラウザから http://127.0.0.1:5000/ にアクセスすると "Hello, Wani" と表示されます。

ルーティング

デコレータでルーティングを設定できます。

@app.route("/", ["GET"])
def hello(request):
    """ usersテーブルのレコードを全件取得し、一番目のレコードを表示 """
    u = WactiveRecord("users")
    all_users = u.all()
    return Response("Hello, {}".format(all_users[0]["name"]))


@app.route("/find_user/{id}", ["GET"])
def find_user(request, id):
    """ usersテーブルから引数idのレコードを見つける """
    u = WactiveRecord("users")
    record = u.find(id)
    return Response("{}".format(record.data))
   
   
@app.route("/data", method=["GET", "POST"])
def get_data(request):
    if request.method == "GET":
        return TemplateResponse("data-form.html")
    else:
        return Response("{}".format(request.forms["num"]))

DB(SQLite)

Waniは標準のORM(WactiveRecord)で、SQLiteを扱うことができます。

manage_db.py

wani/wactive_record/manage_db.py ではテーブルの作成、カラムの追加、インデックス付与などができます。

  • テーブルの作成
    authでユーザーが登録されているか検索する際はemailカラムをもとに検索を行うためemailカラムの追加が必須。
    idは自動付与される(PRIMARY KEY AUTOINCREMENT)。
    テーブルは db/development.sqlite3 に保存。
    $ python manage_db.py create [table_name] [カラム名]:[型] ...
    $ python manage_db.py create users "name:text" "year:int" "email":text

  • 既存テーブルへのカラム追加
    $ python manage_db.py add [table_name] [カラム名]:[型]
    $ python manage_db.py add users "place:text"

  • 既存カラムへインデックス付与
    インデックス名はデフォルトで "カラム名index" になる。
    $ python manage_db.py index [table_name] [カラム名]
    $ python manage_db.py index users name

WactiveRecord(ORM)

from wani import WactiveRecord

u = WactiveRecord("users")
u.find(2)

WactiveRecord(テーブル名)でテーブル名に基づくWactiveRecordオブジェクトを生成できます。

WactiveRecord メソッド

  • all()
    オブジェクトが持つレコードを全件取得
    u.all()
  • first()
    オブジェクトが持つ最小idを取得
    u.first()
  • last()
    オブジェクトが持つ最大レコードを全件取得
    u.last()
  • find(id: int)
    オブジェクトの中で指定されたidレコードを1件取得
    u.find(3)
  • find_by(column_name=value)
    オブジェクトの中で指定された条件のレコードを最初の1件取得
    u.first(name=tom)
  • where(rule: str)
    オブジェクトの中で指定されたruleに基づくレコードを全件取得
    ruleは"place = tokyo"など、演算子の前後にスペース1つ入れて指定
    u.where("place = tokyo")

Auth

About

自作Webフレームワーク

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published