在Cherrypy中,可以这样做:
@cherrypy.expose
def default(self, url, *suburl, **kwarg):
pass
Run Code Online (Sandbox Code Playgroud)
是否有相同的烧瓶?
我正在使用python和CherryPy创建一个约2人使用的简单内部网站.我使用带有CherryPy.quickstart的内置网络服务器,并且从不搞乱配置文件.我最近更换了机器,所以我安装了最新的Python和cherrypy,当我运行该站点时,我可以从localhost:8080访问它,但不能通过IP或Windows机器名称访问它.它可能是机器配置差异或CherryPy或Python的较新版本.我有什么想法可以绑定到正确的IP地址?
编辑:为了说清楚,我目前根本没有配置文件.
在我的controller/request-handler中,我有以下代码:
def monkey(self, **kwargs):
cherrypy.response.headers['Content-Type'] = "application/json"
message = {"message" : "Hello World!" }
return message
monkey.exposed = True
Run Code Online (Sandbox Code Playgroud)
而且,在我看来,我有这个javascript:
$(function() {
var body = document.getElementsByTagName("body")[0];
$.ajaxSetup({
scriptCharset : "utf-8",
contentType: "application/json; charset=utf-8"
});
$.post("http://localhost/wsgi/raspberry/monkey", "somePostData",
function(data) {
try{
var response = jQuery.parseJSON(data);
body.innerHTML += "<span class='notify'>" + response + "</span>";
}catch(e){
body.innerHTML += "<span class='error'>" + e + "</span>";
}
}
);
});
最后,这是我的问题.我没有得到JSON响应,我不知道为什么.
其次,有人能够在不使用工具的情况下,以最简单的方式解释如何将控制器/请求处理程序响应中的数据格式化为JSON响应吗?
是否可以轻松地将CherryPy用作将.html在某个文件夹中显示文件的Web服务器?所有CherryPy入门文档都声明内容是动态生成的:
import cherrypy
class HelloWorld(object):
def index(self):
return "Hello World!"
index.exposed = True
cherrypy.quickstart(HelloWorld())
Run Code Online (Sandbox Code Playgroud)
是否有任何简单的方法来index.html代替HelloWorld.index()方法?
{% if bCat2 == True %}
<div>True</div>
{% else %}
<div>False</div>
Run Code Online (Sandbox Code Playgroud)
<div>False</div>即使bCat2是,也会返回True.谢谢,安德鲁
例如,假设我的cherrypy索引模块设置如下
>>> import cherrypy
>>> class test:
def index(self, var = None):
if var:
print var
else:
print "nothing"
index.exposed = True
>>> cherrypy.quickstart(test())
Run Code Online (Sandbox Code Playgroud)
如果我发送多个GET参数,我会收到此错误
404未找到
意外的查询字符串参数:var2
回溯(最近一次调用最后一次):
文件"C:\ Python26\lib\site-packages\cherrypy_cprequest.py",第606行,在响应cherrypy.response.body = self.handler()文件"C:\ Python26\lib\site-packages\cherrypy_cpdispatch.py",第27行,在调用 test_callable_spec(self.callable,self.args,self.kwargs)文件"C:\ Python26\lib\site-packages\cherrypy_cpdispatch.py",第130行,在test_callable_spec"参数:%s"%",".join(extra_qs_params))HTTPError:(404,'意外的查询字符串参数:var2')由CherryPy 3.1.2提供支持
我正在使用CherryPy 3创建一个RESTful WebService但我遇到了一个问题:我希望能够回答如下请求: / customers/1/products/386意味着我想要ID为1的客户端ID为386的所有产品.
所以我尝试使用CherryPy的MethodDispatcher这样做:
class UserController(object):
exposed = True
def __init__(self):
self.product = ProductController()
@log_io
def GET(self, *args):
return "GET Users :" + str(args)
class ProductController(object):
exposed = True
@log_io
def GET(self, *args):
return "GET Product :" + str(args)
Run Code Online (Sandbox Code Playgroud)
但是,当我请求/ customers/1/products/386时,不是使用正确的参数将我重定向到ProductController.GET,而是使用参数1,"products",386将我重定向到UserController.GET.
要重定向到ProductController.GET我必须查询/ customers/products/386这是不正确的,因为我错过了用户ID参数.
我在这个演示文稿中看到过:使用CherryPy的RESTful Web应用程序,我想要使用的路径样式似乎是一个不错的选择.但有没有一种简单的方法来实现Cherry Py?
我听说过CherryPy 3的_cp_dispatch方法,但我没有得到它究竟是什么以及如何使用它.它是否取代了MethodDispatcher?
在CherryPy中创建RESTful Web API的最佳方法是什么?我一直在寻找几天,似乎没什么好看的.对于Django来说,似乎有很多工具可以做到这一点,但不是CherryPy或我不知道它们.
稍后编辑:我应该如何使用Cherrypy将/ getOrders?account = X&type = Y等请求转换为/ orders/account/type之类的内容?
我在Web应用程序中使用CherryPy,Mako模板和SQLAlchemy.我来自Ruby on Rails背景,我正在尝试为我的模型设置一些数据验证.我无法找出确保"名称"字段在某个其他字段具有值时具有值的最佳方法.我尝试使用SAValidation,但它允许我创建新行,其中所需列为空,即使我validates_presence_of在列上使用.我一直在看WTForms,但这似乎涉及很多重复的代码 - 我已经用表中的列设置了我的模型类,为什么我需要再次重复所有这些列只是为了说"嘿这个一个人需要一个价值"?我是从"现身瘦控制器,脂肪模型 "的心态,一直在寻找在我的模型像Rails的类似的方法validates_presence_of或validates_length_of.我应该如何验证模型收到的数据,并在验证失败时确保Session.add/ Session.merge失败?
我对CherryPy很新.我想知道我的机器中安装了哪个CherryPy版本.如何在终端获得CherryPy版本?
谢谢你教育我.
cherrypy ×10
python ×9
rest ×2
flask ×1
jinja2 ×1
jquery ×1
json ×1
model ×1
sqlalchemy ×1
terminal ×1
ubuntu ×1
validation ×1
web-services ×1