小编Phi*_*hil的帖子

装饰Python类方法 - 如何将实例传递给装饰器?

这是Python 2.5,它也是GAE,并不重要.

我有以下代码.我正在使用dec_check类作为装饰器在bar中装饰foo()方法.

class dec_check(object):

  def __init__(self, f):
    self.func = f

  def __call__(self):
    print 'In dec_check.__init__()'
    self.func()

class bar(object):

  @dec_check
  def foo(self):
    print 'In bar.foo()'

b = bar()
b.foo()
Run Code Online (Sandbox Code Playgroud)

执行此操作时,我希望看到:

In dec_check.__init__()
In bar.foo()
Run Code Online (Sandbox Code Playgroud)

但我得到" TypeError: foo() takes exactly 1 argument (0 given)"作为.foo()一种对象方法,以自我为参数.我猜测问题是bar当我执行装饰器代码时,实例并不存在.

那么如何将一个实例传递bar给装饰器类呢?

python python-decorators

59
推荐指数
3
解决办法
3万
查看次数

Google App Engine开发者服务器记录位置

真的很简单的问题.我在Ubuntu 9.04(我是Ubuntu的新手),我找不到GAE的开发服务器日志.有人可以告诉我他们在哪里吗?谷歌搜索没有返回任何结果.

google-app-engine

25
推荐指数
1
解决办法
7469
查看次数

.htaccess正则表达式需要使尾随正斜杠可选

我需要在我的RewriteRule中包含一个可选的尾随向前闪存,这是一个/

到目前为止我所拥有的是什么

RewriteRule ^([a-zA-Z0-9]+)$ u.php?$1|$2
Run Code Online (Sandbox Code Playgroud)

哪个工作正常,例如http://foo.bar/abcde将重定向到http://foo.bar/u.php?abcde并处理可能存在的任何查询字符串参数.

我需要做的是拿http://foo.bar/abcde/(带尾随向前闪光)并重定向到http://foo.bar/u.php?abcde

所以,如果它存在,我需要在我的RewriteRule中从$ 1中删除最后的正斜杠.我该怎么做呢?我是apache的新手,并尝试了许多不同的正则规则,但无法正确使用它.

regex .htaccess

7
推荐指数
1
解决办法
1万
查看次数

Google App Engine(python):TemplateSyntaxError:'for'包含五个单词的语句应以'reverse'结尾

这是使用Web应用程序框架,而不是Django.

下面的模板代码给了我一个TemplateSyntaxError:当我尝试渲染字典时,带有五个单词的'for'语句应以'reverse'错误结束.我不明白是什么导致了这个错误.有人可以为我解释一下吗?

{% for code, name in charts.items %}
   <option value="{{code}}">{{name}}</option>
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

我正在使用以下内容进行渲染:

class GenerateChart(basewebview):

    def get(self):
        values = {"datepicker":True}
        values["charts"] = {"p3": "3D Pie Chart", "p": "Segmented Pied Chart"}
        self.render_page("generatechart.html", values)

class basewebview(webapp.RequestHandler):
    ''' Base class for all webapp.RequestHandler type classes '''
    def render_page(self, filename, template_values=dict()):
        filename = "%s/%s" % (_template_dir, filename)
        path = os.path.join(os.path.dirname(__file__), filename)
        self.response.out.write(template.render(path, template_values))
Run Code Online (Sandbox Code Playgroud)

python django google-app-engine django-templates

6
推荐指数
1
解决办法
885
查看次数

Django和Google App Engine Helper没有找到ipaddr模块

我正在尝试使用本教程让Django在GAE上运行.

当我运行python manage.py runserver时,我得到下面的堆栈跟踪.我是django和python的新手,所以我不知道接下来的步骤是什么(这是Ubuntu Jaunty btw).似乎django没有找到SDK 1.3.1附带的GAE模块ipaddr.

如何让django找到这个模块?

/home/username/bin/google_appengine/google/appengine/api/datastore_file_stub.py:40: DeprecationWarning: the md5 module is deprecated; use hashlib instead
  import md5

/home/username/bin/google_appengine/google/appengine/api/memcache/__init__.py:31: DeprecationWarning: the sha module is deprecated; use the hashlib module instead
  import sha
Traceback (most recent call last):
  File "manage.py", line 18, in <module>
    InstallAppengineHelperForDjango()
  File "/home/username/Development/GAE/myapp/appengine_django/__init__.py", line 543, in InstallAppengineHelperForDjango
    InstallDjangoModuleReplacements()
  File "/home/username/Development/GAE/myapp/appengine_django/__init__.py", line 260, in InstallDjangoModuleReplacements
    import django.db
  File "/home/username/Development/GAE/myapp/django/db/__init__.py", line 57, in <module>
    'TIME_ZONE': settings.TIME_ZONE,
  File "/home/username/Development/GAE/myapp/appengine_django/db/base.py", line 117, in __init__
    self._setup_stubs() …
Run Code Online (Sandbox Code Playgroud)

django google-app-engine

3
推荐指数
1
解决办法
1818
查看次数

CKAN/Jetty/Solr:ERROR 500:org/apache/tomcat/util/descriptor/LocalResolver

我正在按照本指南从源代码将ckan安装到ubuntu服务器14.04上:http://docs.ckan.org/en/latest/maintaining/installing/install-from-source.html

我遇到的问题是,当我尝试在本地访问solr时,我收到以下错误:

ERROR 500: org/apache/tomcat/util/descriptor/LocalResolver.
Run Code Online (Sandbox Code Playgroud)

我已经google了,并尝试将libtomcatlib-6更改为以前的版本,但降级将不会采取(此后此apt-get表示未找到该版本).有人有主意吗?

solr jetty ckan

3
推荐指数
1
解决办法
1200
查看次数

C#String.getHashCode()为不同的字符串返回相同的值

我的应用程序作为Windows服务运行,我将VS2013附加到它的调试过程.我正在获取图像文件内容的哈希码,以检查以下方法的差异(在静态类中):

static class FileUtils
{
    public static int GetFileHash(string filePath)
    {
        int hash = 0;
        Logger.WriteLog(ToolTipIcon.Info, "Calculating hash code for {0}", filePath);
        StreamReader sr = new StreamReader(filePath, Encoding.Unicode);
        hash = sr.ReadToEnd().GetHashCode();
        sr.Close();
        return hash;
    }
}
Run Code Online (Sandbox Code Playgroud)

这在生产中一直很好.但是,对于两个不同的图像,此方法将始终返回2074746262.我试图在winforms应用程序中使用相同的代码和图像重现这一点,我不能.是否存在调试VS2013中的进程会导致此行为的问题?我用一个完全不同的图像替换了其中一个图像,但它仍然会发生.

c# visual-studio-debugging visual-studio-2013

3
推荐指数
1
解决办法
1320
查看次数

Northwind交易员单位价格冗余?

在northwind交易者数据库中,unitprice列在产品和[订单详细信息]表中.两个表都列出了同一产品的不同价格.这是冗余还是有解释?

database-design northwind

2
推荐指数
1
解决办法
784
查看次数

template.render()Google App Engine(python)

我正在使用谷歌的webapp框架.我在get方法中使用template.render()来为我渲染模板.

我正在使用以下代码为我执行此操作

path = os.path.join(os.path.dirname(__file__), file_name)
self.response.out.write(template.render(path, template_values))
Run Code Online (Sandbox Code Playgroud)

其中file_name是要呈现的模板,template_values是包含要呈现的任何值的dict().如果我没有任何我想要呈现的值,该怎么办?我只是传入一个空dict()物体吗?对我来说这似乎不是一个很好的解决方案.我应该使用template.load()吗?

(我也无法在谷歌应用引擎上找到模板类的文档,因此我问.)

google-app-engine

2
推荐指数
1
解决办法
5485
查看次数

lodash舍入到小数点后1位而不是2位

对我来说,lodash会产生意想不到的行为.我指定舍入到小数点后2位的地方有时会给我一个.这是lodash v3.20.1和Chrome v51.例如,5.599999将舍入到5.6而不是5.59.

var num = 5.58888
console.log('lodash num .round is ' + _.round((num), 2)); // 5.59 as expected

var num2 = 5.59999;
console.log('lodash num2 .round is ' + _.round((num2), 2)); // 5.6 not expected, why?
Run Code Online (Sandbox Code Playgroud)

这是错误还是我做错了什么?

javascript lodash

1
推荐指数
1
解决办法
5840
查看次数