小编alf*_*kim的帖子

使用urllib2进行POST调用而不是GET

在urllib2和POST调用上有很多东西,但我遇到了问题.

我正在尝试对服务进行简单的POST调用:

url = 'http://myserver/post_service'
data = urllib.urlencode({'name' : 'joe',
                         'age'  : '10'})
content = urllib2.urlopen(url=url, data=data).read()
print content
Run Code Online (Sandbox Code Playgroud)

我可以看到服务器日志,当我将数据参数发送到urlopen时,它说我正在进行GET调用.

该库引发了404错误(未找到),这对于GET调用是正确的,POST调用处理得很好(我也尝试使用HTML表单中的POST).

python urllib urllib2

55
推荐指数
5
解决办法
18万
查看次数

'yield'关键字的Docstring标签

在python中有一些docstrings的标签,比如@param@return:

def my_method(a_param):
    ''' @param a_param: Description of this param
        @return: The return value of the method
    '''
    return int(a_param) * (other or 1)
Run Code Online (Sandbox Code Playgroud)

我可以用什么来记录发电机?特别是yield关键字,如:

def my_generator(from=0):
    ''' @param from: The initial value
        @yield: A lot of values
    '''
    yield a_value
Run Code Online (Sandbox Code Playgroud)

我知道@return an iterator可以在这里使用,但我不知道它是否正确,因为生成器也可以返回值.

谢谢.

python documentation docstring

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

Django REST框架 - 使用CurrentUserDefault

我正在尝试将该CurrentUserDefault类用于一个序列化程序.

user = serializers.HiddenField(default=serializers.CurrentUserDefault())
Run Code Online (Sandbox Code Playgroud)

文档说:

为了使用它,在实例化序列化器时,'request'必须作为上下文字典的一部分提供.

我不知道如何创建序列化程序.在视图中,我创建了所有序列化程序:

serializer = NewModelSerializer(data=request.data)
Run Code Online (Sandbox Code Playgroud)

所以我尝试过:

context = dict(request.data)
context['request'] = request
serializer = NewModelSerializer(data=context)
Run Code Online (Sandbox Code Playgroud)

context['request'] = {'user': request.user}
Run Code Online (Sandbox Code Playgroud)

在这两种情况下,错误都是一样的:

Exception Type:     KeyError
Exception Value:    'request'
on:
/Users/Alfonso/virtualenvs/sports/lib/python2.7/site-packages/rest_framework/fields.py in set_context

        self.user = serializer_field.context['request'].user
Run Code Online (Sandbox Code Playgroud)

我还试着u'request'用同样的运气来解码字典()的键.

有没有更好的方法将记录的用户传递给序列化程序?

我正在使用Django REST Framework 3.0和Python 2.7.6

python django django-rest-framework

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

安装plpython时Postgres数据库崩溃

我正在尝试在我的Postgres 9.1中安装plpython但它崩溃了服务器:

postgres@dataserver1:~> /opt/postgres/9.1/bin/psql -d mydb
psql.bin (9.1.4)
Type "help" for help.

mydb=# create language 'plpythonu';
The connection to the server was lost. Attempting reset: Failed.
Run Code Online (Sandbox Code Playgroud)

我安装了python 2.6.8并且在系统中声明了处理程序:

select tmplname, tmplhandler, tmpllibrary from pg_pltemplate where tmplname like 'plpython%'

"plpythonu"  | "plpython_call_handler"  | "$libdir/plpython2"
"plpython2u" | "plpython2_call_handler" | "$libdir/plpython2"
Run Code Online (Sandbox Code Playgroud)

并且处理程序安装在$ libdir中:

postgres@dataserver1:~> ll /opt/postgres/9.1/lib/postgresql/plpython*
-rwxr-xr-x 1 root root 6686333 Aug 17 14:27 /opt/postgres/9.1/lib/postgresql/plpython2.so
Run Code Online (Sandbox Code Playgroud)

关于此的任何线索都是贬值的

编辑

我试过创建扩展plpythonu,plpython2u和plpython3u,所有这些都崩溃了服务器.

在文档中阅读一点我发现\ dx命令列出已安装的扩展:

mydb=# \dx
                 List of installed extensions
  Name   | Version |   Schema   |         Description …
Run Code Online (Sandbox Code Playgroud)

plpython postgresql-9.1

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

Scrapy - 使用多个选项发送表单数据

我正在使用scrapy来解析具有以下形式的网站:

<form id="form1"...>
    <select name="codes" multiple="multiple"...>
        <option value="0">Option one</option>
        <option value="1">Option two</option>
        <option value="2">Option three</option>
        ....
    </select>
</form>
Run Code Online (Sandbox Code Playgroud)

我正在填写并使用以下代码提交表单:

submit_form = FormRequest.from_response(response,
                                        formxpath="//form[@id='form1']",
                                        formdata={'codes': '0'},
                                        callback=self.parse_table)
yield submit_form
Run Code Online (Sandbox Code Playgroud)

如何在表单数据中提交多个代码?我试过了:

formdata={'codes': '["0", "1", "2"]'},
formdata={'codes': ['0', '1', '2']},
Run Code Online (Sandbox Code Playgroud)

没有任何运气。

编辑:

表单有额外的输入控件,其中一些是隐藏的,它们在表单中正确传递。我在表单提交后看到的就像服务器返回到与表单相同的页面,当我期待一个新页面的表格实际上包含我想要检索的数据时。

我对服务器后端知之甚少,只知道它是用 .NET 2.0 构建的。这是一个非常古老的网站,来自政府的依赖。

谢谢。

python forms scrapy

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