小编Tom*_*Tom的帖子

如何在bash脚本中提示用户进行确认?

我想快点说"你确定吗?" 提示在潜在危险的bash脚本顶部进行确认,最简单/最好的方法是什么?

bash

561
推荐指数
8
解决办法
33万
查看次数

如何在Python中将本地时间转换为UTC?

如何将本地时间的日期时间字符串转换为UTC时间字符串

我确定我以前做过这个,但找不到它,所以希望能帮助我(以及其他人)在将来做到这一点.

澄清:例如,如果我2008-09-17 14:02:00在我的本地时区(+10)中,我想生成一个具有相同UTC时间的字符串:2008-09-17 04:02:00.

此外,请访问http://lucumr.pocoo.org/2011/7/15/eppur-si-muove/,请注意,一般情况下这不可能与DST和其他问题一样,因此从当地时间到UTC时间.

python datetime utc localtime

284
推荐指数
13
解决办法
38万
查看次数

如何在画布元素上获得鼠标点击的坐标?

将单击事件处理程序添加到将返回单击的x和y坐标(相对于canvas元素)的canvas元素的最简单方法是什么?

不需要传统的浏览器兼容性,Safari,Opera和Firefox都可以.

javascript canvas

263
推荐指数
11
解决办法
26万
查看次数

如何在Django ModelForm中过滤ForeignKey选项?

说我的我有以下内容models.py:

class Company(models.Model):
   name = ...

class Rate(models.Model):
   company = models.ForeignKey(Company)
   name = ...

class Client(models.Model):
   name = ...
   company = models.ForeignKey(Company)
   base_rate = models.ForeignKey(Rate)
Run Code Online (Sandbox Code Playgroud)

即有多个Companies,每个都有RatesClients.每个都Client应该有一个Rate从它的父级Company's Rates而不是另一个基础中选择的基础Company's Rates.

在创建用于添加a的表单时Client,我想删除Company选项(因为已经通过Company页面上的"添加客户端"按钮Rate选择了该选项)并且还将选择限制为该选项Company.

我如何在Django 1.0中解决这个问题?

我目前的forms.py文件只是样板文件:

from models import *
from django.forms import ModelForm

class ClientForm(ModelForm):
    class Meta:
        model = Client
Run Code Online (Sandbox Code Playgroud)

views.py也是基本的:

from django.shortcuts …
Run Code Online (Sandbox Code Playgroud)

python django django-forms

218
推荐指数
4
解决办法
13万
查看次数

如果进程死了,如何编写bash脚本来重启?

我有一个python脚本,它将检查队列并对每个项目执行操作:

# checkqueue.py
while True:
  check_queue()
  do_something()
Run Code Online (Sandbox Code Playgroud)

如何编写一个bash脚本来检查它是否正在运行,如果没有,则启动它.大概下面的伪代码(或者它应该做类似的事情ps | grep?):

# keepalivescript.sh
if processidfile exists:
  if processid is running:
     exit, all ok

run checkqueue.py
write processid to processidfile
Run Code Online (Sandbox Code Playgroud)

我将从crontab中调用它:

# crontab
*/5 * * * * /path/to/keepalivescript.sh
Run Code Online (Sandbox Code Playgroud)

bash scripting cron

213
推荐指数
7
解决办法
21万
查看次数

如何逃避os.system()调用?

使用os.system()时,通常需要将作为参数传递的文件名和其他参数转义为命令.我怎样才能做到这一点?优选地,可以在多个操作系统/壳上工作但特别是用于bash的东西.

我目前正在做以下操作,但我确定必须有一个库函数,或者至少是一个更优雅/更健壮/更有效的选项:

def sh_escape(s):
   return s.replace("(","\\(").replace(")","\\)").replace(" ","\\ ")

os.system("cat %s | grep something | sort > %s" 
          % (sh_escape(in_filename), 
             sh_escape(out_filename)))
Run Code Online (Sandbox Code Playgroud)

编辑:我接受了使用引号的简单答案,不知道为什么我没有想到这一点; 我猜是因为我来自Windows,其中'和'的表现略有不同.

关于安全性,我理解这个问题,但是,在这种情况下,我对os.system()提供的快速简单的解决方案感兴趣,并且字符串的来源要么不是用户生成的,要么至少是由用户输入的.可信用户(我).

python shell escaping

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

如何在Django模板中使用嵌套for循环访问最外层的forloop.counter?

是否可以在Django的以下模板中访问最外层for循环的forloop.counter:

{% for outerItem in outerItems %}
    {% for item in items%}
        <div>{{ forloop.counter }}.&nbsp;{{ item }}</div>
    {% endfor %}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

在上面的例子中,forloop.counter返回最里面的for循环计数器

django django-templates

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

如何使用后退按钮检测用户是否已访问某个页面?

这个问题类似于用户在浏览器上点击按钮时的跟踪,但不一样......我有一个解决方案,并将其发布在此处以供参考和反馈.如果有人有更好的选择,我全都耳朵!

情况是我有一个"就地编辑"的页面,一个la flickr.即有一个"点击这里添加描述"DIV,点击时变成带有保存和取消按钮的TEXTAREA.单击"保存"将数据发布到服务器以更新数据库,并将新描述放在DIV中以代替TEXTAREA.如果刷新页面,则会使用"单击以编辑"选项从数据库中显示新描述.这些天相当标准的Web 2.0.

问题是,如果:

  1. 页面加载时没有描述
  2. 用户添加了描述
  3. 通过单击链接导航页面
  4. 用户单击后退按钮

然后显示的内容(来自浏览器的缓存)是没有包含新描述的动态修改的DIV的页面版本.

这是一个相当大的问题,因为用户认为他们的更新已丢失,并且不一定了解他们需要刷新页面才能看到更改.

因此,问题是:如何将页面标记为在加载后进行修改,然后检测用户何时"返回"并在该情况下强制刷新?

browser ajax back-button

86
推荐指数
6
解决办法
6万
查看次数

覆盖Django的级联删除行为有哪些选择?

Django模型通常可以非常充分地处理ON DELETE CASCADE行为(以适用于本机不支持它的数据库的方式).

但是,我在努力发现在不适合的情况下覆盖此行为的最佳方法是什么,例如在以下场景中:

  • ON DELETE RESTRICT(即如果有子记录,则阻止删除对象)

  • ON DELETE SET NULL(即不删除子记录,但将其父键设置为NULL而不是断开关系)

  • 删除记录时更新其他相关数据(例如删除上传的图像文件)

以下是我所知道的实现这些目标的潜在方法:

  • 覆盖模型的delete()方法.虽然这种方法有效,但是当通过a删除记录时,它会被回避QuerySet.此外,delete()必须重写每个模型,以确保Django的代码永远不会被调用,super()并且无法调用,因为它可能使用a QuerySet来删除子对象.

  • 使用信号.这似乎是理想的,因为在直接删除模型或通过QuerySet删除时会调用它们.但是,不可能阻止删除子对象,因此无法实现ON CASCADE RESTRICT或SET NULL.

  • 使用正确处理此问题的数据库引擎(在这种情况下Django会做什么?)

  • 等到Django支持它(直到那时还有bug ...)

似乎第一种选择是唯一可行的选择,但它很难看,用洗澡水将婴儿扔出去,并且当添加新的模型/关系时可能会遗漏某些东西.

我错过了什么吗?有什么建议?

django django-signals cascading-deletes

57
推荐指数
3
解决办法
4万
查看次数

如何使用subprocess.Popen通过管道连接多个进程?

如何使用Python subprocess模块执行以下shell命令?

echo "input data" | awk -f script.awk | sort > outfile.txt
Run Code Online (Sandbox Code Playgroud)

输入数据将来自一个字符串,所以我实际上并不需要echo.我已经走到这一步了,任何人都可以解释我是如何通过它来解决的sort吗?

p_awk = subprocess.Popen(["awk","-f","script.awk"],
                          stdin=subprocess.PIPE,
                          stdout=file("outfile.txt", "w"))
p_awk.communicate( "input data" )
Run Code Online (Sandbox Code Playgroud)

更新:请注意,虽然下面接受的答案实际上没有回答问题,但我相信S.Lott是对的,最好避免首先解决这个问题!

python subprocess pipe

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