如何将index()传递给名为uppercase()的装饰器函数。我希望从index()传递的值被大写化。
我得到了这个错误:
500 Internal Server Error
The server encountered an unexpected condition which prevented it from fulfilling the request.
Traceback (most recent call last):
File "/home/user/.local/lib/python3.6/site-packages/cherrypy/_cprequest.p
我正在使用从头开始创建自己的站点。我是一个拥有Python和Javascript的,但是我非常热衷于学习这两种编程语言。
我现在想要实现的是fill up HTML form、->、Send data using、、by AJAX、->、Define Rights for a visitor、->和redirect to index。
我和这个错误斗争了好几天,因为我在互联网上找不到如何使用JSON在python中发送数据的例子。
正如我说的,我是初学者,所以请指出我正在编写的代码中的所有不良行为:)
Traceback (most recent call last):
我正在构建我的第一个CherryPy应用程序,并且希望测试一个不应该公开访问(而不是公开)的方法--如果这个方法是公开的,我可以很好地测试它,但是我想知道是否有一种方法可以切换,公开该方法取决于哪个文件调用了这个函数。例如,如果函数是从mainApp调用的,那么如果它是从调用的,它将不会被公开,但是如果它是从测试文件中调用的,那么它会公开吗?
the code I was thinking of is along the lines of
if __name__ != '__main__': @cherrypy.expose
def supersecretmethod(sel
我使用cherrypy作为web服务器,在返回页面之前,我希望检查用户的登录状态。这适用于主应用程序类中的方法(在site.py中),但是当我在一个类中调用同一个修饰函数时(在一个单独的文件中),它会给出一个错误。
validate_user()是用作装饰器的函数。它要么将用户传递给该页面,要么将其发送到401个受限页面,作为cherrypy.Tool,如下所示:
from user import validate_user
cherrypy.tools.validate_user = cherrypy.Tool('before_handler', validate_user)
我有一个cherrypy应用程序,在一些视图上,我想开始只允许某些用户查看它们,并将其他任何人发送到需要授权的页面。
有没有一种方法可以用自定义装饰器来做这件事?我认为这将是最优雅的选择。
下面是我想要做的一个基本示例:
class MyApp:
@authorization_required
def view_page1(self,appID):
... do some stuff ...
return html
def authorization_required(func):
#what do I put here?
此外,作为装
我一直在尝试使用Python中的不同类型的装饰器,我发现很难理解参数化的装饰器。装饰器接受callable并返回callable(在我的例子中,callable是一个函数),代码如下:
def check_non_negative(index):
def validator(f):
def wrap(*args):
if args[index]<0:
raise ValueError(
'Argument {} must be non negative.'
我见过一些使用@QtCore.Slot装饰器的PySide插槽的示例代码,也有一些不使用。我自己测试了一下,似乎没有什么不同。我应该或不应该使用它有什么原因吗?例如,在以下代码中:
import sys
from PySide import QtCore
# the next line seems to make no difference
@QtCore.Slot()
def a_slot(s):
print s
class SomeClass(QtCore.QObject):
happened = QtCore.Signal(str)
def __init__(
我使用来运行一个非常简单的web服务器。它的目的是处理GET参数,如果它们是正确的,则对它们执行某些操作。
import cherrypy
class MainServer(object):
def index(self, **params):
# do things with correct parameters
if 'a' in params:
print params['a']
index.exposed = True
cherrypy.quickstart(MainServe