小编jay*_*yde的帖子

Python装饰器没有返回值

我一直在python 2.7中试验装饰器并尝试在空闲时进行设置:

def logme(func):
    def wrapped(*args):
        for arg in args: print str(arg)
        func(*args)
    return wrapped

@logme
def my_func(*args):
    res = 1
    for arg in args :
        print "Multiplying %s by %s" % (arg, res)
        res*=arg
    print res
    return res
Run Code Online (Sandbox Code Playgroud)

输出是这样的:

2
3 
Multiplying 2 by 1
Multiplying 3 by 2
6
Run Code Online (Sandbox Code Playgroud)

所以res值是对的.但是,当我尝试通过这个存储res值时:

x = my_func(2,3)
Run Code Online (Sandbox Code Playgroud)

价值xNone.它是否正确?如果没有,我在这里做错了什么?

python decorator python-decorators

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

Django:在基于类的通用视图ListView中访问HttpRequest

我将通过在views.py中将ListView子类化来实现基于自定义类的通用视图。我的问题是如何在我的子类中访问请求(HttpRequest对象)参数?我所属的HttpRequest对象是views.py中所有函数的默认请求参数。例:

def search(request):
Run Code Online (Sandbox Code Playgroud)

更清楚地说,这是我到目前为止已经尝试的方法:

** views.py

class CustomListView(ListView):
    temp = ""

    def get(self, request, *args, **kwargs):
        self.temp = request.GET.get('temp')
        return super(CustomListView, self).get(request, *args, **kwargs)

    def get_context_data(self, **kwargs):
        context = super(CustomListView, self).get_context_data(**kwargs)
        context['temp'] = self.temp
        return context
Run Code Online (Sandbox Code Playgroud)

** urls.py

url(r'^temp/$, CustomListView.as_view(queryset=Document.objects.all()[:1],template_name="temp.html")),
Run Code Online (Sandbox Code Playgroud)

** temp.html

{% extends 'base.html' %}
{% block content %}
<h2>{{ temp }}
{% endblock %}
Run Code Online (Sandbox Code Playgroud)

但是,当我运行服务器并访问/ temp /(temp.html)时,所看到的只是“无”。因此,“ temp”为“”或“ temp”根本没有创建。

任何想法都将不胜感激。谢谢!

python django django-class-based-views class-based-views

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

在你的 python 脚本中包含 python 模块(依赖项)安装

在运行实际/主脚本之前,有没有办法首先包含/调用 python 模块(依赖项)安装?

例如,在我的 main.py 中:

import os, sys
import MultipartPostHandler

def main():
    # do stuff here
Run Code Online (Sandbox Code Playgroud)

但是 MultipartPostHandler 还没有安装,所以我想要的是在实际运行 main.py 之前先安装它......但是以自动化的方式。当我说自动时,我的意思是我只会调用脚本一次以启动依赖项安装,然后是主脚本的实际功能。(不知何故,有点类似于maven。但我只需要安装部分)

我已经知道 setuptools 的基础知识。问题是我可能必须分别调用安装 (setup.py) 和主脚本 (main.py)。

任何想法都非常感谢。提前致谢!

python python-module

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

NGINX:将请求详细信息放在自定义 404.json 返回上

对于 404s 和 500s/502s/504s 错误,我返回自定义 JSON 错误页面:

{
    "response":
    {
            "status": "EXCEPTION_404_NOT_FOUND",
    }
}
Run Code Online (Sandbox Code Playgroud)

在我的sites-enabled/service_nginx.conf中,我将其设置如下:

error_page 404 /404.json;
location /404.json {
    internal;
    root /temp/error_response_templates;
}
Run Code Online (Sandbox Code Playgroud)

这工作正常。也就是说,每次 404 都会返回 JSON。但我想将请求或一些请求详细信息添加到返回的 JSON 中。例如,对于http://service.com/param1/param2/,如果遇到 404,我想在返回的 JSON 中包含 param1 和 param2。像这样:

{
    "response":
    {
        "status":"EXCEPTION_404_NOT_FOUND",
        "param1":<param1 value>,
        "param2":<param2 value>,
    }
}
Run Code Online (Sandbox Code Playgroud)

这可能吗?如果是,有人可以帮我怎么做吗?提前致谢!

python json nginx custom-error-pages

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

Django:存储在MySQL DB中的时区不正确

我有一个应用程序在settings.py中使用'Asia/Taipei'作为其时区,并在models.py上的datetimefield之一上使用auto_now = true:

--- settings.py ---
TIME_ZONE = 'Asia/Taipei'
--- models.py ---
models.DateTimeField(auto_now=True)
Run Code Online (Sandbox Code Playgroud)

在我的系统上,台北也被用作我的时区: 在此输入图像描述

在MySQL Workbench上,我已经查询了全局和会话tz,它们的返回值是"SYSTEM": 在此输入图像描述

我的问题是当一个条目添加到DB时,系统上和settings.py上指定的时区未被使用.查看示例快照: 在此输入图像描述

我缺少什么?做错了?提前致谢!

mysql django timezone

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