2014-11-20 3 views
1

Я бы хотел добавить простую форму, отображающую единую текстовую область.Простая форма с 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

Благодаря

ответ

0

Вам действительно нужно изучить основы технологии вы имеете дело с. И основы StackOverlow задают хорошие вопросы, поэтому они понятны и полезны для других.

У вас есть действие относительной формы, action='getnote', которое сообщает браузеру добавить его к текущему пути. Вот почему вы получаете форму, представленную /HomeP/getnote/. Вместо этого используйте абсолютное действие, action='/getnote'.

Несмотря на то, что ваш «Но я хочу назвать getnote как функцию, а не как страницу!« звучит как вздор, я думаю, у меня есть идея, где вас направлять. Узнайте о AJAX и в конце концов вы сможете отправить форму в фоновом режиме.

+0

Я все еще учусь! Я все еще следую учебнику в опубликованной ссылке. Итак, я не могу понять, почему, если я копирую и вставляю пример, который он работает, если я запускаю свою программу, это не так. – user2174050

+0

@ user2174050 Это потому, что копирование без понимания предмета является плохой практикой. Это не имеет никакого отношения к CherryPy. Форма HTML представляет собой относительный URL-адрес '' action''. В учебнике форма находится в '' '' '' '' index'' method, и в этом случае '' action = generate'' приводит к URL-адресу действия '/ generate'. В вашем случае форма находится в ''/HomeP'', а '' action = getnote' ведет к ''/HomeP/getnote''. – saaj

Смежные вопросы