私は以前に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()
解答として投稿する必要があります。回答は –
です。 – Lipwig