2011-06-29 10 views
0

私は以前にDjangoを使っていたプロジェクトに取り組んでいます。しかし、これは私たちのニーズに少し重いことが分かりました。私たちは本当にリクエストを処理する必要があるので、cherrypyを使うようにプロジェクトをシフトしています。

私の問題はこれです。ユーザーが次のjQuery関数を実行して実行すると、htmlページ(index.html)にフォームが表示されます。

$(document).ready(function() { 
    $("#loginform").submit(function() { 
     var request_data = {username:$("#username").val(),password:"test"}; 
     $.post('/request',request_data, function(data) { 
             $("#error").html(data['response']); 
     }); 
     return false; 
    }); 
}); 

これは問題なく動作します。 以下のCherrypyメソッドは要求データを受け取るべきですが、実行されていないようです。リクエストのCherrypyメソッドを次に示します。

@cherrypy.expose 
def request(self, request_data): 
    print "Debug" 
    cherrypy.response.headers['Content-Type'] = 'application/json' 
    return simplejson.dumps(dict(response ="Invalid username and/or password")) 

これが唯一の試験方法であると私は「デバッグ」ターミナルウィンドウに出てくると端末Iで

をクリックすると送信ボタンの後に、Webページに表示されるエラーメッセージを表示するために期待

"POST /request HTTP/1.1" 404 1254 "http://127.0.0.1:8080/" "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_7; en-us) AppleWebKit/533.21.1 (KHTML, like Gecko) Version/5.0.5 Safari/533.21.1" 

これは、リクエストメソッドが見つからないことを示しています。私が考えることができるのは、それがパラメータと関係していることだけです。

私がcherrypyを初めて使ったとき、私はポインタが欠けていると思っていました。

PS:以下は動作しますが、チェリーピーに複数のデータを渡す必要があります。 この問題で任意の助けや指導を事前に

$(document).ready(function() { 
    $("#loginform").submit(function() { 
     $.post('/request',{username:$("#username").val()}, function(data) { 
             $("#error").html(data['response']); 
     }); 
     return false; 
    }); 
}); 

感謝を(CherryPyにパラメータは、これが機能するようにユーザ名に変更されます)。

ここに私の完全なcherrypyファイルがあります。

import cherrypy 
import webbrowser 
import os 
import simplejson 
import sys 
from backendSystem.database.authentication import SiteAuth 

MEDIA_DIR = os.path.join(os.path.abspath("."), u"media") 

class LoginPage(object): 
@cherrypy.expose 
def index(self): 
    return open(os.path.join(MEDIA_DIR, u'index.html')) 

@cherrypy.expose 
def request(self, request_data): 
    print "Debug" 
    cherrypy.response.headers['Content-Type'] = 'application/json' 
    return simplejson.dumps(dict(response ="Invalid username and/or password")) 


config = {'/media': {'tools.staticdir.on': True, 'tools.staticdir.dir': MEDIA_DIR, }} 

root = LoginPage() 

# DEVELOPMENT ONLY: Forces the browser to startup, easier for development 
def open_page(): 
webbrowser.open("http://127.0.0.1:8080/") 
cherrypy.engine.subscribe('start', open_page) 

cherrypy.tree.mount(root, '/', config = config) 
cherrypy.engine.start() 
+0

解答として投稿する必要があります。回答は –

+0

です。 – Lipwig

答えて

6

私はこれに対する解決策を発見しました。 JQuery:

$(document).ready(function() { 
$("#loginform").submit(function() { 
    $.post('/request',{username:$("#username").val(),password:"test"}, function(data) { 
            $("#error").html(data['response']); 
    }); 
    return false; 
}); 

}); 、本当に木のための木を見ることができない場合が

def request(self, **data): 
    # Then to access the data do the following 
    print data['<keyValue'] # In this example I would type print data['username'] 

シンプル: はその後CherryPyにメソッドで、私はこれを行います。これが他の人に役立つことを願っています