gpt4 book ai didi

post - 无法在 LISP hunchentoot 中获取帖子

转载 作者:太空宇宙 更新时间:2023-11-03 18:38:10 25 4
gpt4 key购买 nike

我尝试基于 Hunchentoot 实现一个简单的帖子示例。

代码如下:

(define-easy-handler (test :uri "/test") () 
(with-html-output-to-string (*standard-output* nil :prologue t :indent t)
(:html
(:body
(:h1 "Test")
(:form :action "/test2" :method "post" :id "addform"
(:input :type "text" :name "name" :class "txt")
(:input :type "submit" :class "btn" :value "Submit"))))))

(define-easy-handler (test2 :uri "/test2") (name)
(with-html-output-to-string (*standard-output* nil :prologue t :indent t)
(:html
(:body
(:h1 name)))))

我可以正确连接到 http://127.0.0.1:8080/test并查看文本输入表单。但是当我提交文本时,我得到了一个空白页面,我希望该页面的标题是在文本输入中给出的。

不知道哪里出了问题,谁能指点一下?

最佳答案

将您的处理程序更改为此

(define-easy-handler (test2 :uri "/test2") (name)
(with-html-output-to-string (*standard-output* nil :prologue t :indent t)
(:html
(:body
(:h1 (str name))))))

然后它应该工作。阅读 cl-who 文档。特别是关于本地宏的信息。我在此处包含相关文档。

既不是字符串也不是关键字也不是以关键字开头的列表的形式将保持原样,除了以下局部宏:

  • 看起来像(str 形式)的形式将被替换为

    (let ((result form)) (when result (princ result s)))

    (loop for i below 10 do (str i)) =>
    (loop for i below 10 do
    (let ((#:result i))
    (when #:result (princ #:result *standard-output*))))
  • 看起来像 (fmt form*) 的表格将被替换为

    (format s form*)

    (loop for i below 10 do (fmt "~R" i)) => (loop for i below 10 do (format s "~R" i))
  • 看起来像 (esc form) 的形式将被替换为

    (let ((result form)) (when result (write-string (escape-string result s))))
  • 如果一个表单看起来像 (htm form*) 那么每个表单都将服从我们刚刚描述的转换规则,即这是主体被另一个 WITH-HTML-OUTPUT 调用包裹.

    (loop for i below 100 do (htm (:b "foo") :br))
    => (loop for i below 100 do (progn (write-string "<b>foo</b><br />" s)))

关于post - 无法在 LISP hunchentoot 中获取帖子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28452796/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com