在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中有一些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可以在这里使用,但我不知道它是否正确,因为生成器也可以返回值.
谢谢.
我正在尝试将该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
我正在尝试在我的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) 我正在使用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 构建的。这是一个非常古老的网站,来自政府的依赖。
谢谢。