Je travaille actuellement sur un projet où nous utilisions précédemment Django. Cependant, cela s'est avéré un peu lourd pour nos besoins, donc nous passons le projet à utiliser cherrypy car nous avons seulement besoin de traiter les demandes.
mon problème est le suivant. J'ai un formulaire sur la page html (index.html) lorsque l'utilisateur clique sur soumettre la fonction jQuery suivante est exécutée.
$(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;
});
});
Cela fonctionne très bien. La méthode Cherrypy suivante devrait ramasser les données de la requête mais elle ne semble pas être exécutée. Voici la méthode Cherrypy pour la requête.
@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"))
Ceci est seulement une méthode d'essai et j'attendre à voir « Debug » arriver dans la fenêtre de terminal et le message d'erreur affiché sur la page Web après que le bouton est utilisé
dans le terminal I obtenir ce message après que la demande est faite:
"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"
Cela indiquerait qu'il ne peut pas trouver la méthode de demande. Tout ce que je peux penser c'est que c'est quelque chose à voir avec le paramètre.
Comme je suis nouveau à cherrypy je m'attends à quelque chose de simple que je manque des pointeurs serait génial. PS: Les travaux suivants, mais je dois être en mesure de transmettre plusieurs données à Cherrypy. (Le paramètre cherrypy est modifié pour nom d'utilisateur pour permettre que cela fonctionne)
$(document).ready(function() {
$("#loginform").submit(function() {
$.post('/request',{username:$("#username").val()}, function(data) {
$("#error").html(data['response']);
});
return false;
});
});
Merci à l'avance pour toute aide ou des conseils dans ce numéro.
Voici mon fichier cherrypy complet.
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()
vous devriez poster une solution comme une réponse ci-dessous –
compris, fera – Lipwig