小编lum*_*ked的帖子

使用字符串变量**kwargs作为命名参数

我试图找出一种循环json配置文件的方法,并使用键名作为使用**kwargs的方法的参数名称.我创建了一个json配置文件,并使用键名作为方法.我只是将"set_"附加到键名称以调用正确的方法.我将json转换为字典以循环任何默认值.我想通过字符串变量将参数名称传递给**kwargs.我试图传递一本字典,但似乎并不喜欢这样.

user_defaults = config['default_users'][user]

for option_name, option_value in user_defaults.iteritems():
    method = "set_" + option_name
    callable_method = getattr(self, method)
    callable_method(user = user, option_name = user_defaults[option_name])
Run Code Online (Sandbox Code Playgroud)

调用上面的callable_method将"option_name"作为kwarg的实际名称.我想传递它,以便当"shell"= option_name时它将作为参数名称的字符串名称传递.一个例子如下.这样我就可以遍历配置中的任何键,而不用担心我在为完成某些事情而编写的任何方法中寻找的内容.

def set_shell(self, **kwargs): 
    user  = kwargs['user']
    shell = kwargs['shell']

    ## Do things now with stuff
Run Code Online (Sandbox Code Playgroud)

任何帮助表示赞赏我是python的新手,仍然学习如何以pythonic的方式做事.

python command-line kwargs python-2.7

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

在开发过程中有Ansible pip update python包

我一直在写一些Ansible游戏来设置python virtualenv,并且在开发期间更新python包并重新启动服务器.我有问题虽然获得pip更新包.我真的不在乎这是怎么做的,但我更喜欢在开发过程中只是在virtualenv中添加python路径的路径然后只是重新启动服务器,但我还没有想出如何在Ansible中做到这一点.

所以我的问题是我如何设置一个本地git仓库,可以安装到virtualenv的site-packages中,也可以使用正确的virtualenv设置Ansible到sys.path.insert的位置.

目前我正在尝试:

sudo pip install ~/workspace/python-repo
Run Code Online (Sandbox Code Playgroud)

在我安装软件包之前,我将一个我从Authenticator重命名的类重命名为像Authen这样的完全错误的类.该课程在全新安装期间显示Authen.然后我将类名更改回正确的名称(Authenticator),碰撞版本并运行

sudo pip install ~/workspace/python-repo --upgrade
Run Code Online (Sandbox Code Playgroud)

但在检查site-packages中的实际文件后,它仍显示Authen名称而不是更新的文件.

我怎样才能在开发过程中使用本地仓库并在我的环境中获取即时更新的文件?以及通过Ansible使其成为可重复的过程.

这是我在Ansible尝试做的事情.我的第一个游戏是设置我只想运行一次的环境.

- name: Install python-repo
local_action: pip name=${python_root}
                  virtualenv=${working_dir}/development
Run Code Online (Sandbox Code Playgroud)

$ {python_root}只是我的python项目的位置,当然工作目录是新的virtualenv设置.

然后不知怎的,我想要一个开发游戏来更新virtualenv中的python repo.这是我到目前为止所做的,但这也不起作用.

- name: Update python-repo
local_action: pip  name=${python_root}
                   virtualenv=${working_dir}/development
                   state=latest

- name: Restart services.
  local_action: service name=${item} state=restarted
  with_items: ${services} 
Run Code Online (Sandbox Code Playgroud)

python pip ansible

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

使用Apache在单独的域上运行Flask api和Angularjs前端,正确配置Angularjs和CORS

这已经通过Stackoverflow进行了讨论,但我无法找到使其工作的解决方案.我甚至尝试过这篇文章中讨论的很多内容(CORS问题.烧瓶< - > AngularJS),因为它与我的设置完全相关,但我仍然很丢失.

我有一个本地运行的python flask api服务器.我已将此域名命名为bac-api.这是vhost的样子.

<VirtualHost *:80>
    ServerName bac-api

    WSGIDaemonProcess bacapi python-path=/home/lumberjacked/workspace/bas/development/lib/python2.7/site-packages
    WSGIScriptAlias / /home/lumberjacked/workspace/bas/development/bac-api/bacapi.wsgi
    Header set Access-Control-Allow-Origin "*"
    Header set Access-Control-Allow-Headers "Origin, X-Requested-With, Content-Type, Accept, application/json"
    Header set Access-Control-Allow-Methods "POST, GET, OPTIONS"

    <Directory /home/lumberjacked/workspace/bas/development/bac-api>
        WSGIProcessGroup bacapi
        WSGIApplicationGroup %{GLOBAL}
        Order deny,allow
        Allow from all
    </Directory>

#SSLEngine on
#SSLCertificateFile /etc/apache2/ssl/bac_api_ssl.crt
#SSLCertificateKeyFile /etc/apache2/ssl/bac_api_ssl.key
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

我有一个angularjs站点作为我的前端运行在一个名为manage.bac的独立域上.我正在编写一个连接到bac-api的身份验证服务,并发布api密钥和/或用户凭据,询问服务器用户是否经过身份验证.

我可以卷曲到服务器,这可以工作并返回一个响应.

curl -X POST -H "Content-Type: application/json" -d '{ "api": "7f3d6d7338b921ae4ca95cecc452ef1790005ec10c2343fabe5a59ea" }' http://bac-api/authenticated/  

response -- {"authenticated": false}
Run Code Online (Sandbox Code Playgroud)

还要管理.bac和我的登录信用卡email@email.com和密码我得到相同的响应,但我已经配置它返回401如果您没有使用存储的会话进行身份验证.

POST http://bac-api/authenticated/ 401 (UNAUTHORIZED) bac-api/authenticated/:1 …
Run Code Online (Sandbox Code Playgroud)

apache cors flask angularjs

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

使用Python Flask或其他框架输出多行字符串

我想在服务器设置中使用它们之前尝试使用Redhat kickstart文件并在python中修改它们.我的应用程序使用python来卷曲我的Redhat Satellite服务器上的原始kickstart文件然后我正在对kickstart文件中的某些值进行字符串替换.当我在python中卷曲文件时,它会以多行字符串的形式返回,这是我需要的,以便redhat kickstart正确解释文件.但是当我通过其中一个框架(web2py,bottle,flask)返回字符串变量时,会发生一些事情并且它不会将其作为多行字符串返回,我需要它来保留除了区域之外的原始文件的确切格式我改变.我不想把我的kickstart文件放在模板中,因为我通过卫星管理它们,如果我从卫星卷曲文件然后它拿起任何修改,而不需要进入模板的时间.然后在模板或其他东西中我返回没有模板的字符串或模板文件中我只将1个变量作为整个kickstart文件传递给模板.

@route('/kickstart/<name>')
def kickstart(name):

    ks = vula.kickstarter.kickstart.Kickstarter()
    ks_file = ks.getKickstartFile()

    return pystache.render('{{kickstart}}', {'kickstart': ks_file})
Run Code Online (Sandbox Code Playgroud)

这是我的vula包中的方法.它完全按照我需要的方式返回文件.但是在这之间又发生了一些事情,并通过框架返回这个值.

def getKickstartFile(self):

    response = urllib2.urlopen('https://my-satellite-server/core-kickstarter')
    ks_file = response.read()

    return ks_file
Run Code Online (Sandbox Code Playgroud)

我开始使用Bottle作为框架,但我发现一条声明说他们无法返回多行字符串,所以请抓一下.我搬到了Flask,但目前Flask正在做同样的事情.我还在学习python,可能我做错了什么,但我需要任何帮助才能使这个工作正常.我想输出一个多行字符串.我知道你也使用了

""" or '''
Run Code Online (Sandbox Code Playgroud)

对于多行字符串,但即使你这样做并通过框架发送它仍然会作为一个连续的行打印到屏幕上.我究竟做错了什么?作为最后的手段,如果我不能输出多行字符串,我将被迫将kickstart文件放入模板中.

python redhat web2py bottle flask

5
推荐指数
2
解决办法
8518
查看次数

angularjs未捕获错误:未知提供者:

我需要一些帮助.我正在学习Angularjs并尝试创建服务.目前我正在尝试将其模块中的所有内容分开.当我创建一个名为(bac.route-manager)的新模块并尝试将其作为RouterService注入应用程序配置时,我得到一个错误,我不理解其含义或如何解决它.我所有的其他东西似乎都有效,除非我试图添加这个模块,这个未知的提供程序只有在我尝试注入它之后才会出现.请任何帮助表示赞赏.

我的错误

Uncaught Error: Unknown provider: RouterService from bac
Run Code Online (Sandbox Code Playgroud)

我的app.js文件

angular.module('bac', [
   'bac.route-manager'
])

.config( function bacAppConfig( $routeProvider, RouterService ) {

     //I dont knwo if i can do this but right now it doesnt matter because of error
     console.log(RouterService.getRoutes());
});
Run Code Online (Sandbox Code Playgroud)

我的route-manager.js文件

angular.module('bac.route-manager', [])

.service('RouterService', function() {

    this.getRoutes = function() {
        return {
                "/login": {
            templateUrl: 'app/modules/login-manager/partials/login.tpl.html',
             requiredLogin: false
         },

        "/dashboard": {
            templateUrl: 'app/modules/dashboard-manager/partials/dashboard.tpl.html',
            controller: 'DashboardController',
            requiredLogin: true
         }

        };

};
Run Code Online (Sandbox Code Playgroud)

});

我使用grunt生成js包含在我的html文件中,但这里看起来像是为了简洁而删除了很多东西.

我的index.html

<html lang="en" class="no-js" ng-app="bac">
    <body>
        <ng-view></ng-view>

     <script …
Run Code Online (Sandbox Code Playgroud)

javascript angularjs gruntjs

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

Angularjs在使用身份验证时路由波动

我正在寻找一种更好的方法来在angularjs中进行路径状态之间的转换.目前,我一直在使用几个不同的教程来使用服务器端的身份验证来配置后端api服务器的角度.

http://frederiknakstad.com/authentication-in-single-page-applications-with-angular-js/ https://vickev.com/#!/article/authentication-in-single-page-applications-node-js -passportjs-angularjs

这两者都描述了与服务器端而不是客户端身份验证相同的解决方案.我有一个角度的Auth服务,它使用一种方法发布到api服务器,检查用户是否使用api密钥登录.

isLoggedIn: function( event, toState ) {
        var user_api = {};

        if( "user" in $rootScope ) {
            user_api = { "api": $rootScope.user.api };
        } 

        $http.post('http://bac-api/authenticated/', user_api)
            .success( function( user ) {
                if( toState.url === '/login' && user.authenticated === true) {
                    $state.transitionTo('dashboard');
                }
            })
            .error( function( user ) {
                if( user.authenticated === false ) {
                    event.preventDefault();
                    $state.transitionTo('login');
                }
            });
    },
Run Code Online (Sandbox Code Playgroud)

如果当前不存在api密钥,则用户未登录,服务器将发送{"authenticticated":false} 401响应.如果用户有api密钥,它使用该api密钥检查服务器是否有效(登录)或无效(未登录).

为了捕获路由并检查用户是否已通过身份验证并使用"stateChangeStart"

$rootScope.$on("$stateChangeStart", function ( event, toState, toParams, fromState, fromParams ) {

    Auth.isLoggedIn( event, toState ); …
Run Code Online (Sandbox Code Playgroud)

javascript authentication angularjs angular-ui-router

5
推荐指数
0
解决办法
2903
查看次数

子目录中的Zend应用程序使Zend布局链接正常工作

我在子目录中设置了Zend应用程序.不要问为什么我只是这样做(不是我喜欢的方法),但我没有那个选择.Zend应用程序驻留在一个名为dsa的子目录中.

http://dsa.dev/dsa
Run Code Online (Sandbox Code Playgroud)

我的.htaccess

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.*)$ public/index.php [QSA,L] 
Run Code Online (Sandbox Code Playgroud)

这有效并将引导应用程序.我可以毫无问题地进入我的根目录和其他目录.

在我的application.ini我已经设置

resources.frontController.baseUrl = "/dsa".  
Run Code Online (Sandbox Code Playgroud)

在我的layout.phtml文件中如果我var_dump路径它看起来像这样.

var_dump($this->baseUrl('css/main.css'));
http://dsa.dev/dsa/css/main.css
Run Code Online (Sandbox Code Playgroud)

没有链接工作,所有css和js文件都没有正确链接.如果您点击F12并查看它们,则会找不到任何文件的404.要获取显示文件的正确路径,我需要做什么.这是我第一次尝试在子目录中设置zend,显然我做的不对.我已经阅读了关于这个主题的所有内容.谢谢您的帮助.

php .htaccess zend-framework

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

无法从映射文件生成zf2 DoctrineORMModule实体

我安装了zf2 DoctrineORMModule和DoctrienModule.我正在尝试使用命令工具创建映射文件并从这些映射文件生成实体.(我知道这不是首选方法,但这就是我要去做的方法.我有我的理由.)

我配置了一个restful模块,这是我的这个模块的Doctrine配置.

// Doctrine config
    'doctrine' => array(
        'driver' => array(
            'Restful_driver' => array(
                'class' => 'Doctrine\ORM\Mapping\Driver\AnnotationDriver',
                'cache' => 'array',
                'paths' => array(__DIR__ . '/../src/Restful/Entities')
            ),
            'orm_default' => array(
                'drivers' => array(
                    'Restful\Entities' => 'Restful_driver'
                )
            )
        )
    )
Run Code Online (Sandbox Code Playgroud)

我先跑

doctrine orm:convert-mapping xml /to/my/dest/path --from-database --force
Run Code Online (Sandbox Code Playgroud)

这将创建包含所有表信息的xml文件.这部分工作正常,我可以查看它创建的xml.接下来我试着跑

doctrine orm:generate-entities /to/my/dest/path --generate-annotations 
--generate-methods
Run Code Online (Sandbox Code Playgroud)

我没有得到任何错误,但我也没有得到任何结果.上一个命令的输出是.

No Metadata Classes to process.
Run Code Online (Sandbox Code Playgroud)

我试过阅读但没有发现任何真正解决我问题的文章.大多数人都说没有正确配置我的注释/映射.但我可以通过控制器转储实体管理器.

var_dump($this->getServiceLocator()->get('doctrine.entitymanager.orm_default'));
Run Code Online (Sandbox Code Playgroud)

我需要做什么才能从xml映射生成实体?任何帮助表示赞赏.

php doctrine-orm zend-framework2

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

子路由上的Zf2布局css和javascript路径无法解析

目前我正在尝试设置所有使用相同模板的段路由.目前,基本路线/我的仪表板视图使用布局.这适用于基本路线.但在尝试添加子段路由后,布局css和js路径不正确.我想在/ my-dashboard/ideas/my-dashboard/whatever/my-dashboard/whatever/update/777下的任何片段使用相同的布局,但只是使用不同的视图.并且布局为每个视图提供正确的css和js路径.

route.config.php

'dashboard' => array(
        'type' => 'literal',
        'options' => array(
            'route'    => '/my-dashboard',
            'defaults' => array(
                'controller' => 'dashboard',
                'action'     => 'dashboard',
            ),
        ),
        'may_terminate' => true,
            'child_routes' => array(
                'wahtever' => array(
                    'type'    => 'Segment',
                    'options' => array(
                        'route'    => '/ideas',
                        'defaults' => array(
                            'controller' => 'ideas',
                            'action'     => 'ideas',
                        ),
                    ),
                ),
            ),
    ),
Run Code Online (Sandbox Code Playgroud)

如果我转到/ my-dashboard,它将显示正确的视图,其中包含我想要用于任何这些路径的布局.如果我转到/ my-dashboard/ideas,路由会解析但是当在控制台中查看时,所有的css和js都被404搞砸了,但是找不到这样的东西.如果我在布局中添加../它将在嵌套路线上工作,但随后会搞砸/ my-dashboard路线.

module.config.php

'view_manager' => array(
    'template_map' => array(
        'layout/my-dashboard-layout' => __DIR__ . '/../view/layout/my-dashboard-layout.twig',
        'wmi/dashboard/dashboard'    => __DIR__ . '/../view/dashboard/dashboard.twig',
        'wmi/ideas/ideas' …
Run Code Online (Sandbox Code Playgroud)

javascript css php zend-framework2

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

Zend Framework 2无法呈现模板; 解析器无法解析为第461行的PhpRenderer.php中的文件

我试图在没有MVC框架的情况下使用ZF2 PhpRenderer.目前我无法实现所有内容,但我想开始将一些内容重新分解为修改后的版本,直到我能够在以后的生活中实现整个框架.

我一直在尝试使用程序员参考.

在我的tester.php脚本的顶部,我有.

use Zend\View\Model\ViewModel,
    Zend\View\Renderer\PhpRenderer,
    Zend\View\Resolver;
Run Code Online (Sandbox Code Playgroud)

然后在脚本中我开始尝试渲染脚本.

$renderer = new PhpRenderer();

$map = new Resolver\TemplateMapResolver(array(
    'tester' => __DIR__ . '/tester.phtml',
));

$resolver = new Resolver\TemplateMapResolver($map);

$model = new ViewModel();
$model->setVariable('foo', 'bar');
$model->setTemplate('tester');

echo $renderer->render($model);
Run Code Online (Sandbox Code Playgroud)

我得到的错误就是这个

无法渲染模板"测试人员"; 解析器无法解析为第461行/home/lumberjacked/workspace/www/vendor/zf2/library/Zend/View/Renderer/PhpRenderer.php中的文件

任何帮助都是极好的.

php zend-framework

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

使用express.js和locomotive.js在中间件中添加api令牌

我正在构建一个我将使用angularjs前端的rest api服务器.我正在尝试实现一些在每个请求上运行的中间件.对于每个请求我想要检查api令牌(如果存在)继续检查是否有效,如果不存在则返回未经授权的响应而不完成请求.

在我尝试添加中间件之前请求工作,但是一旦我尝试添加中间件或在主路由超时之前捕获路由.

http://localhost:3000/developer/test?api=fhgjtyd6fjrj4off6r4rhgjdldksrghiue750f
{
    response: {
        id: "test",
        api: "fhgjtyd6fjrj4off6r4rhgjdldksrghiue750f"
    }
}
Run Code Online (Sandbox Code Playgroud)

这两条路线都可以使用,但我更喜欢资源版本.(http://locomotivejs.org/guide/routing/)

this.match('/developer', { controller: 'developer', action: 'show' });

this.resources('developer');
Run Code Online (Sandbox Code Playgroud)

这是我一直试图遵循的一个例子,因为它看起来像我需要做的.(http://webapplog.com/intro-to-express-js-parameters-error-handling-and-other-middleware/),但目前我试图实现这样的方式,它超出了路线.它将在方法中使用console.log(),但它就像是等待它永远不会得到的东西.如果我尝试使用next()我得到一个未定义的错误,我不想将应用程序注入Authenticator或任何其他对象.

function requiredParamHandler(param){
    //do something with a param, e.g., check that it's present in a query string
    return function (req,res, next) {
    //use param, e.g., if token is valid proceed with next();
        next();
    });
 }

 app.get('/api/v1/stories/:id', requiredParamHandler('token'), story.show);

     var story  = {
         show: function (req, res, next) {
             //do some logic, e.g., restrict fields …
Run Code Online (Sandbox Code Playgroud)

node.js express locomotivejs

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

AngularJS:如何在编译和链接指令后从Directive内部运行JavaScript

我有一个响应式模板,我试图用我的Angularjs应用程序.这也是我的第一个Angular应用程序,所以我知道我有很多错误,并在我的未来重新考虑.

我已经阅读了足够多的角度,我知道DOM操作被认为是在指令内部.

我有一个javascript对象负责模板重新调整侧面菜单的大小,基本上是模板的外壳.我将所有这些代码移动到一个指令中,并将其命名为response-theme.

首先,我添加了所有正在使用的方法,然后在底部定义了App对象.我删除了函数体以缩短代码.

基本上底部的对象是一个与所有方法一起使用的辅助对象.

var directive = angular.module('bac.directive-manager');

directive.directive('responsiveTheme', function() {

return {
    restrict: "A",

    link: function($scope, element, attrs) {


        // IE mode
        var isRTL = false;
        var isIE8 = false;
        var isIE9 = false;
        var isIE10 = false;

        var sidebarWidth = 225;
        var sidebarCollapsedWidth = 35;

        var responsiveHandlers = [];

        // theme layout color set
        var layoutColorCodes = {

        };

        // last popep popover
        var lastPopedPopover;

        var handleInit = function() {
        };

        var handleDesktopTabletContents = function () { …
Run Code Online (Sandbox Code Playgroud)

javascript angularjs angularjs-directive angularjs-scope

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