小编Pro*_*e85的帖子

检查列表是否包含Ansible中的项目

我正在尝试检查提供的版本是否是有效的受支持版本.我已经在变量中设置了可接受版本的列表,如果提供的版本不在列表中,我想要失败.但是,我不确定如何做到这一点.

#/role/vars/main.yml
---
  acceptable_versions: [2, 3, 4]
Run Code Online (Sandbox Code Playgroud)

#/role/tasks/main.yml
---
  - fail: 
      msg: "unsupported version"
      with_items: "{{acceptable_versions}}"
      when: "{{item}} != {{version}}"

  - name: continue with rest of tasks...
Run Code Online (Sandbox Code Playgroud)

以上是我想要做的事情,但是我无法弄清楚是否有一种单行方式来构建对故障模块的"list contains"调用.

yaml ansible

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

Ansible - 访问库存别名

有一个库存文件,如:

[my_hosts]
my_host ansible_ssh_host=123.123.123.123
my_host2 ansible_ssh_host=234.234.234.234
Run Code Online (Sandbox Code Playgroud)

我想在我的模板中收集一些调试信息.

我试图收集事实ansible -m setup my_host.变量ansible_hostname,HOSTNAMEHOST包含机器的主机名,即echo $HOSTNAME与我的ansible别名不同.

ansible

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

为每个<li>附加水平规则

对于我的<ul>列表,我想<hr>在列表的每个元素之后添加一个.结果应呈现如下:

<ul class="mylist">
    <li>
        moooo!
        <hr width="40%">
    </li>
    <li>
        maaaaa!
        <hr width="40%">
    </li>
    ...
</ul>
Run Code Online (Sandbox Code Playgroud)

这是添加<hr>到每个的坏样式<li>所以我想仅使用css来折射它.我不能用:

.mylist > li: after{
    content: "<hr>"
}
Run Code Online (Sandbox Code Playgroud)

因为内容会逃避角色.

我还没有想使用jQuery:

$('.mylist').find('li').append('<hr width="40%">');
Run Code Online (Sandbox Code Playgroud)

所以,问题是,我怎么可能追加<hr width="40%">每个 <li>使用特定列表的CSS3

html css html5 css-selectors css3

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

防止bootstrap表比span更宽

以下是通常动态生成的内容.在页面的主要部分有一个<div class="span6">.有时这个div中的表变得比div本身更宽(我检查了css,宽度设置为100%).如果我只将短文放入表中,或者如果我将div放宽,一切都很好.问题是:

  1. 为什么桌子会变宽div class=spanX?我一直认为,块元素占用其父元素的宽度?
  2. td表中各个字符/空格的数量可以变化.如何防止表格比div更广泛?当然,我可以动态检查a中的字符数,ts但我如何处理这些信息呢?

http://jsfiddle.net/vNnc6/

HTML:

<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="utf-8">
<title>MySite</title>
<meta name="author" content="me"/>

<link href="static/css/bootstrap.css" rel="stylesheet">
<link href="static/css/bootstrap-responsive.css" rel="stylesheet">
<link href="static/profhase.css" rel="stylesheet">

<script type="text/javascript" src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script type="text/javascript" src="static/bootstrap/js/bootstrap.js"></script>


<body>
  <div class="navbar navbar-inverse navbar-fixed-top">
    <div class="navbar-inner">
      <div class="container">
    <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
    </a>

    <ul class="nav">
      <li><a class="brand" href="profhase">MyBrand</a></li>
      <li><a href="#">Home</a></li>
      <li><a href="#about">About</a></li>
      <li><a href="#contact">Blog</a></li>
    </ul>

      <div class="nav pull-right collapse nav-collapse" style="hight: 0px"> …
Run Code Online (Sandbox Code Playgroud)

html css twitter-bootstrap

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

在一个新的Django项目中,我应该使用基于类或基于函数的视图吗?

在一个新的Django项目中,我只是想知道是使用基于类的视图(CBV)还是基于函数的视图(FBV).

根据Django的文档:

基于类的视图提供了另一种将视图实现为Python对象而不是函数的方法.它们不替换基于函数的视图,但与基于函数的视图相比具有一定的差异和优势

这似乎与蟒蛇禅相矛盾'只有一种方法可以做到'

那么,哪种方式更好?

到目前为止,我只看到三种可能性:

  1. 始终使用FBV

    这意味着根本不使用通用视图(因为这些是基于类的,因为1.5)

  2. 始终使用CBV:

    在确定请求处理订单时存在某些问题.看到

    http://lukeplant.me.uk/blog/posts/djangos-cbvs-were-a-mistake/

    我还认为构建整个类层次结构对性能不利.在那种情况下,我也会问自己,为什么FBV还没有被弃用?

  3. 据称,将通用CBV纳入FBV

    https://gist.github.com/spookylukey/2596285

    这导致了许多残酷的样板代码

您是否看到其他任何方式,或者有人知道观点的去向?

python django

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

Django - 没有模型的登录用户

我正在尝试实现 SSO 登录,从 saml 响应中获取所有授权权限:

class SAMLServiceProviderBackend(object):

    def authenticate(self, saml_authentication=None):
        if not saml_authentication:  # Using another authentication method
            return None

        if saml_authentication.is_authenticated():
            attributes = saml_authentication.get_attributes()
            user = User(username=saml_authentication.get_nameid())
            user.first_name = attributes['givenName']
            user.last_name = attributes['sn']

        return None
Run Code Online (Sandbox Code Playgroud)

在视图中我得到了类似的东西

...
user = authenticate(saml_authentication=auth)
login(self.request, user)
...
Run Code Online (Sandbox Code Playgroud)

login由于缺少save()方法而失败。唯一的方法是继承User并重写该save方法。尝试这个,我得到了下一个错误is_authenticatedget_and_delete_messages等等

有没有一种简单的方法可以将用户对象插入到会话中,而不将用户保存到数据库中?

就像是:

request.session['user'] = authenticate(saml_authentication=auth)
Run Code Online (Sandbox Code Playgroud)

python django django-authentication

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

python django shell(ipython)意外行为还是bug?

使用语言环境设置时,Django shell表现出(至少对我而言)意外.逗号分隔的十进制字段的表单验证在从外部脚本调用时起作用,而在从django shell(ipython)调用时失败.

启动一个新项目我得到了以下文件:

local_forms/
??? local_forms
?   ??? __init__.py
?   ??? models.py
?   ??? settings.py
?   ??? urls.py
?   ??? wsgi.py
??? manage.py
??? my_form.py
??? test_form.py
Run Code Online (Sandbox Code Playgroud)

local_forms/models.py:

from django.db import models

class MyModel(models.Model):
    val=models.DecimalField("value",max_digits=11,decimal_places=2)
Run Code Online (Sandbox Code Playgroud)

my_form.py

from django import forms
from django.conf import settings
from local_forms.models import MyModel


class MyForm(forms.ModelForm):
    val = forms.DecimalField(localize=True)

    def __init__(self,*args,**kwargs):
        super(MyForm,self).__init__(*args,**kwargs)
        self.fields['val'].localize=True
        if __debug__:
            print self.fields['val'].localize
            print ("Separator: "+settings.DECIMAL_SEPARATOR)
            print ("Language: " +settings.LANGUAGE_CODE)

    class Meta:
        model=MyModel
Run Code Online (Sandbox Code Playgroud)

test_form.py:

#!/usr/bin/env python
import os
import sys

if …
Run Code Online (Sandbox Code Playgroud)

python django ipython django-forms

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

用parent初始化子类

有父类和子类我想用父实例初始化子类.我的方式看起来很麻烦(见下文):

我定义了一个static方法来提取init父初始化的参数:

class Parent(object):
    @staticmethod
    get_init_params(parent_obj):
        a = parent_obj.a
        b = parent_obj.b
        return (a, b)

    def __init__(self, a, b):
        self.a = a
        self.b = b

class Child(Parent):
    def __init__(self, parent):
        super(Parent, self).__init__(*get_init_params(parent))
Run Code Online (Sandbox Code Playgroud)

可能有更直接的方式吗?

编辑现在课程更简单

python inheritance

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

Django 模型继承 - 得到孩子

有没有办法访问基本模型的实际孩子,意思是:继续使用 django Docs 中的示例,让我们假设我正在建模不同的外卖餐厅,它们只是有共同点

  • 姓名
  • 都有deliver方法

至此:

class Place(models.Model):
    name = models.CharField(max_length=10)

class Pizzeria(Place):
    topping = models.CharField(max_length=10)
    tip = models.IntegerField()

    def deliver(self):
        deliver_with_topping(self.topping)
        ask_for_tip(self.tip)

class Shoarma(Place):
    sauce = models.CharField(max_length=10)
    meat = models.CharField(max_lenght=10)

    def deliver(self):
        prepare_sauce_with_meat(self.sauce, self.meat)
Run Code Online (Sandbox Code Playgroud)

我现在想执行:

Place.objects.get(name="my_place").<GENERIC_CHILD>.deliver()
Run Code Online (Sandbox Code Playgroud)

即我不需要知道这个地方实际上是什么,只需要知道常用的deliver方法。然后模型“知道”该调用什么。

有类似的东西<GENERIC_CHILD>吗?

django

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

pytest - 默认夹具参数值

我在 pytest 中编写了一个夹具,它没有参数化,但被很多测试使用。后来我需要参数化这个夹具。

为了不必进行mark.parametrize所有旧测试,我执行了以下操作:

def ldap_con(request):
    try:
        server_name = request.param
    except AttributeError:
        server_name = "ldaps://my_default_server"
    c = Connection(server_name, use_ssl=True)
    yield c
    c.unbind()
Run Code Online (Sandbox Code Playgroud)

现在我可以同时拥有:

def test_old(ldap_con):
    run_test_to_default_connection(ldap_con)


@pytest.mark.parametrize('ldap_con', ['mynewserver'], indirect=True)
def test_new(ldap_con):
    run_test_to_new_connection(ldap_con)
Run Code Online (Sandbox Code Playgroud)

该解决方案有几个缺点:

  • 我发现了一个任意的属性错误(可能还有另一个)
  • 它不考虑命名参数
  • 读者不清楚有默认值

是否有标准方法来定义夹具参数的默认值?

pytest python-3.x

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