2016-12-28 3 views
-1

私は可能な限り最小限のjavascriptを使用することを目指して、PythonベースのWebフレームワークを作成しています。 uilangのような軽量なものを作成して、イベントをPythonコードに渡す必要があります。私はそれが何らかの理由でオブザーバオブジェクト(?)の種類をpingするjQueryソリューションでなければならないと思います。JSフロントエンド付きPythonバックエンド

私はRemiのような純粋なPythonインターフェイスを作成するためのいくつかの努力を発見しましたが、私のコードでどのように再実装する必要があるか分かりません。

だが、私はそのようなクラスを作りましょう:

class WebView(): 
    def __init__(self, template, **callbacks): 
     """ 
     Callbacks are dict, {'object': callback} 
     """ 
     self.template = template 
     self.customJS = None 
     for obj, call in callbacks: 
      self.setCallback(obj, call) 

    def __call__(): 
     """ 
     Here I return template 
     Assume {{customJS}} record in template, to be simple 
     """ 
     return bottle.template(self.template, customJS = self.customJS) 

    def setCallback(self, obj, call): 
     """ 
     Build custom js to insert 
     """ 
     self.customJS += ('<script ....%s ... %s' % (obj, call)) 

だから、どのように私は戻って私のコールバックにボタンを押すと、たとえば、JSからイベントを渡すために作ることができますか?

私は実際にはJSを全く知らないので、質問が広すぎるのではないかもしれないと理解していますが、私はできるだけ説明的にしようとしています。

+1

このような叙事詩に取り組む前に、クライアントとサーバーのテクノロジーがどのように協調するかについて、さらに調査する必要があります。 https://pythonprogramming.net/jquery-flask-tutorial/で始まるかもしれません。 –

答えて

0

あなたはおそらくwebsocketsでそれを行うことができますが、私はそれが最良の方法だとは思いません。 Python側でwebsocket-pythonライブラリを使用することができます。ウェブサイトでは、すべてのボタンクリックコールバックでwebsocketメッセージを送信するだけです。

1

あなたはPythonのWebフレームワークのjavascriptは必要ありません。あなたは、JSの一行なしで、フラスコまたはdjangoでページを提供して良いでしょう。

これらのページは、いくつかのフォームでかなり静的になりますが、完全に機能します。

もっと動的なコンテンツとインタラクションが必要な場合は、おそらくJSが必要ですが、XMLHttpRequestsを使用すると、イベントで非同期にPythonバックエンドを呼び出すことができます。しかし、それを正しく行うためには、JSを学ぶことから始めるべきです。

関連する問題