Я бы хотел добавить простую форму, отображающую единую текстовую область.Простая форма с CherryPy
Когда пользователь отправляет форму, мне нужно вызвать функцию, которая проверяет правильность данных и разрабатывает их.
Я добавил форму на странице таким образом:
<td><form method = "get" action = "getnote"> <input type="text" name="note"/> <button type="submit"><img src="/img/validate.jpg" width="20" height="20" /></button></form></td>
С getnote Я хочу, чтобы вызвать функцию getnote (примечание), что проверить достоверность и сохранить его в БД.
Тогда у меня есть:
class HelloWorld(object):
@cherrypy.expose
def index(self):
return "Hello world!"
@cherrypy.expose
def getnote(self, note):
#check and save
getnote.exposed = True
@cherrypy.expose
def HomeP(self):
Session = sessionmaker()
session = Session(bind=engine)
template = loader.load('index.html')
title = "Home page"
ctx = Context(title=title)
return template.generate(ctx).render('html', doctype='html')
затем в локальном хосте/HomeP есть форма и показал правильно, когда я заполнить форму и отправить его, браузер показывает мне ошибку пути «HomeP/getnote/"отсутствует. Но я хочу назвать getnote как функцию, а не как страницу!
Я следовал за этот учебник, но, может быть, есть что-то, что я пропустил: http://cherrypy.readthedocs.org/en/latest/tutorials.html#tutorial-4-submit-this-form
Благодаря
Я все еще учусь! Я все еще следую учебнику в опубликованной ссылке. Итак, я не могу понять, почему, если я копирую и вставляю пример, который он работает, если я запускаю свою программу, это не так. – user2174050
@ user2174050 Это потому, что копирование без понимания предмета является плохой практикой. Это не имеет никакого отношения к CherryPy. Форма HTML представляет собой относительный URL-адрес '' action''. В учебнике форма находится в '' '' '' '' index'' method, и в этом случае '' action = generate'' приводит к URL-адресу действия '/ generate'. В вашем случае форма находится в ''/HomeP'', а '' action = getnote' ведет к ''/HomeP/getnote''. – saaj