小编sha*_*jan的帖子

关于如何编写函数的编程风格问题

所以,我今天只是编写了一些代码,并且我意识到在编程函数时,编码风格并没有太多的一致性.我主要担心的一个问题是它是否适合对其进行编码,以便检查用户的输入是否在函数的外部有效,或者只是将用户传递的值抛出到函数中并检查值是否有效在那里.让我举一个例子:

我有一个基于环境列出主机的功能,我希望能够将环境分成多个主机.所以用法的一个例子是这样的:

listhosts -e testenv -s 2 1
Run Code Online (Sandbox Code Playgroud)

这将从"testenv"中获取所有主机,将其分成两部分,并显示第一部分.

在我的代码中,我有一个函数,您可以在列表中传递它,它会根据您的参数返回一个列表列表进行拆分.但是,在我传递一个列表之前,我首先在getops过程中验证我MAIN中的参数,所以在主要的我检查以确保用户没有传递负面,我确保用户没有请求拆分成比方说,4部分,但要求显示第5部分(这将是无效的)等.

tl; dr:你会检查用户输入你是MAIN类的流的有效性,或者你会检查你的函数本身,并在有效输入的情况下返回一个有效的响应,或者返回NULL输入无效的情况?

显然这两种方法都有效,我只是想听听专家关于哪种方法更好:)感谢您提出任何意见和建议!仅供参考,我的例子是用Python编写的,但我对一般的编程答案更感兴趣,而不是语言特定的答案!

programming-languages coding-style user-input

8
推荐指数
2
解决办法
234
查看次数

运行Apache时,Django错误打开SQLite3 db文件

我收到了这个错误:

在/的OperationalError

无法打开数据库文件

到目前为止我尝试过的事情是在settings.py中设置dev.db文件的绝对路径.我已经尝试将www-data添加到我的管理员组并将我的项目文件夹组设置为admin,并将组设置为www-data,其中没有一个解决了问题.

我完全被困在这里,如果有人有解决方案,那将非常感激!

肖恩

python sqlite django ubuntu

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

如何在Python中进行动态类生成?(或者一系列if/elses会更好)

所以,我正在写一些东西,我遇到了如何做到这一点的障碍(以及正确的做事方式).所以,解释这种情况将有助于更好地理解问题,并希望有人会知道答案:)在这里:

基本上,我在Python中编写了一些动态表单(更具体地说是Django) - 我正在使用表单工厂来生成我想要的表单.这很好,花花公子,到目前为止,我一直在以硬编码的方式定义表单的属性,基本上将属性与某个表单(ChoiceField,布尔值等)匹配.但是,我希望而不是硬编码这些值本质上是根据我传递的信息动态创建属性字典...

我基本上有一个"选项"数组,所以这里是我正在考虑的两种方法:

  1. 为我的"选项"模型/对象提供一个函数,它将具有一系列if/elses.喜欢:
def get_property():
    if value = "artifact": #artifact being one option
        return form.BooleanField(label="blah")
    else if value = "environment": #environment being another type of option
        return form.ChoicesField(label="blah")
    etc...
Run Code Online (Sandbox Code Playgroud)
  1. 使用非常多态的方法.这样,我的意思是基于我的"选项"对象创建一个对象,并将基于该选项创建一个新对象.说可能是这样的:
class Base_Property():
    value = ""
    def __init__(self, option):
        value = form.BooleanField()

class Artifact_Property(Base_Property):
    def __init__(self, option):
        Base_Property.__init__(self, option)
        value = form.ChoiceField(choices=some_choices_array())
Run Code Online (Sandbox Code Playgroud)

如果选项二是要走的路,有人可以解释我如何根据变量动态创建对象吗?比如,匹配值的名称(例如,Artifact,以匹配Artifact_Property).

非常感谢你的帮助!我真的很有兴趣看到恰当的方式 - 也许它会激起争论:)

-Shawn

python forms oop django inheritance

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

Django URL正则表达式问题

我有一个关于Django URL配置的快速问题,我猜也是REGEX.我有一个小型配置应用程序,它以下列方式接收环境和工件:

url(r'^env/(?P<env>\w+)/artifact/(?P<artifact>\w+)/$', 'config.views.ipview', name="bothlist"),
Run Code Online (Sandbox Code Playgroud)

现在,这工作正常,但我想要做的是能够有其他可选的参数,例如详细模式或无格式化模式.我知道如何在视图中做到这一点,但我无法绕过正则表达式.

电话会是这样的

GET /env/<env>/artifact/<artifact>/<opt:verbose>/<opt:noformat>
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激,谢谢!

-Shawn

python regex django

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

非常困惑 - javascript没有被执行 - 除非在Firebug中打开控制台?

我刚刚开始为一个项目做一些Javascript工作,我做的主要是后端工作,所以我很抱歉在这个新手!此外,不使用Javascript框架,因为我想在让自己变得非常容易之前了解基础知识:)

所以,这是我的问题/困惑:我写了一个动态改变形式的小javascript.这就是我调用代码的方式:

// loads the initial box
window.onload = initList(environment_box);

// loads artifacts on each change to environment select box
environment_box.onchange = changeList;
Run Code Online (Sandbox Code Playgroud)

这就像魔法一样 - 在CHROME中就是这样!我从来没有注意到它不适用于Firefox(它只是一个内部工具,所以我可以假设体面的浏览器,但我觉得嘿,如果它在Chrome中运行,它将在Firefox中运行!).所以,我做了一些调查,好像代码没有在Firefox中执行.我掏出了萤火虫,想看看发生了什么事.

有趣的是,当我在firebug上启用Console时,我的代码被执行了!我很困惑为什么,我非常感谢我能得到的任何帮助.谢谢!

-Shawn

javascript firefox firebug google-chrome

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

由API触发的Hudson构建

我想知道是否有办法在Hudson(或任何各种插件)中执行此操作.我的IDEAL场景:

我想通过类似REST的API触发基于作业的构建,并且在该构建上,我希望它返回一个作业ID.之后,我想调查此ID以查看其状态.完成后,我希望看到状态和内部版本号.

现在,因为我似乎无法实现这一点,这是我目前尚未实施的解决方案:

当你做一个REST调用来做一个构建时,它不是非常RESTful.它只是返回HTML,我将不得不进行一种解析来获取作业ID.或者,我可以为列出所有作业的所有历史记录执行REST调用,最新的作业将是我刚刚构建的作业.有了这个,我可以轮询控制台输出以获得构建的输出.

任何人都知道我可以实现"理想"解决方案吗?

integration hudson build process continuous

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