Doge log

Abby CTO 雑賀 力王のオフィシャルサイトです

formlessのactionのURLがよろしくないとかって話は誰も言わない

通称:寝坊。そんでもって通称:ホームレス。のお話
Nevowはformを作成するformlessってモジュールがいるんだけど。
こいつを使うと簡単にフォーム登録を実装することができる。
こんな感じ。※全部は載ってないよ

from zope.interface import implements

from core import root

from formless import annotate
from formless import iformless
from formless import webform

class IForm(annotate.TypedInterface):
    
    def add(name=annotate.String(required=True)):
        pass

    add = annotate.autocallable(add)
    

class ProjectPage(root.BasePage):
    implements(IForm)
    addSlash = True
    contentTemplateFile = 'project.html'

    def render_form(self, context, data):
        return webform.renderForms()
    
    def add(self, name):
        print '***** add called with:', name

autocallbackがキモ。
だけどこいつのactionのURLが

/xxxxx/freeform_post!!メソッド名/

みたいになる。
嫌いだなあ。これ。
formを作る際に入力チェックが全て終わった時点で呼ばれるメソッドを指定するんだけど
そいつがURLに書かれているようだ。
そもそもなんで嫌かっていうとRootにdjangoのurlresolver的なものを使ってるからで
意味不明なURLとか来ると変に解釈しちゃうからうまく動かないってだけなんですけどね。
urlresolverはボツだなあ。基本完全一致だからsegmentsに空タプル返してしまうとうまく行かないよう。
URLもDirectory階層でそれに準拠ってルールで行くのが無難。
まあURLの解釈周りがへぼいからあかんのだよ。モダンじゃないよね全く。
あ。でもひとつ言うとホームレスはフォームのテンプレを自分で書けるので某xxxxとかなんかより
自由だと思うよ。
エラーメッセージは・・・・。そのうち書く!
Axiomに行くまでには時間がかかりそう><
うくく。