小编Anu*_*yal的帖子

如何更改基类

我有一个派生自基类的类,并且有许多行代码

例如

class AutoComplete(TextCtrl):
    .....
Run Code Online (Sandbox Code Playgroud)

我想要做的是更改基类,以便它的工作方式

class AutoComplete(PriceCtrl):
    .....
Run Code Online (Sandbox Code Playgroud)

我已经使用了两种类型的AutoCompletes,可能想添加更多的基类,那么我该如何动态地做呢?

组合将是一个解决方案,但我不想修改代码很多.

有什么简单的解决

python class dynamic

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

使用eval进行表达式评估有多安全?

我正在构建一个网站,我需要用户能够根据数据库表中的值来评估某些表达式,而不是使用像pyparsing等工具,我正在考虑使用python本身,并提出了一个解决方案这足以达到我的目的.我基本上使用eval来评估表达式并传递全局变量dict为空,__builtins__这样就没有任何东西可以被访问,本地人会为DB中的值进行dict,如果用户需要一些函数我也可以传递它们,例如

import datetime
def today():
    return datetime.datetime.now()

expression = """ first_name.lower() == "anurag" and today().year == 2010 """

print eval(expression, {'__builtins__':{}}, {'first_name':'Anurag', 'today':today})
Run Code Online (Sandbox Code Playgroud)

所以我的问题是它有多安全,我有三个标准

  1. 用户可以访问我的程序或表等的当前状态吗?
  2. 用户可以访问操作系统级别的呼叫吗?
  3. 用户可以通过循环或使用大量内存来暂停我的系统,例如通过范围(10*8),在某些情况下,他可以例如100**1000等,因此3不是一个问题.我可以使用tokenize检查这样的操作,无论如何我将使用GAE因此它并不是很关注.

编辑:IMO这不是Q:661084的重复,因为它结束了这一个开始,我想知道即使__builtins__被阻止,用户可以做坏事吗?

python security eval

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

允许在Python/Django中复制多对多条目的方法

我有以下Django模型:

class Icon(models.Model):
    name = models.CharField(max_length=200,null=False,blank=False)

class Post(models.Model):
    icons = models.ManyToManyField(Icon)
Run Code Online (Sandbox Code Playgroud)

当我写下面的代码时:

post = Post()
icons = []
icon_id = form.cleaned_data['icon_1']
if (icon_id):
    i = Icon.objects.get(id=icon_id)
    icons.append(i)

icon_id = form.cleaned_data['icon_2']
if (icon_id):
    i = Icon.objects.get(id=icon_id)
    icons.append(i)

post.icons = icons
post.save()
Run Code Online (Sandbox Code Playgroud)

它在大多数情况下工作正常,创建一个Post对象和两个Icon对象.

但是,如果icon_id在两种情况下都是1,那么它只在数据库中创建一个条目,而不是两个.

所以它似乎检查重复并删除它们.

我如何使这项工作,所以我允许重复?(我想要一个与帖子关联的两个SAME图标.)

谢谢!

python django many-to-many manytomanyfield

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

如何捕获str异常?

import sys
try:
    raise "xxx"
except str,e:
    print "1",e
except:
    print "2",sys.exc_type,sys.exc_value
Run Code Online (Sandbox Code Playgroud)

在上面的代码中引发了一个字符串异常虽然已经弃用,但我使用的第三方库仍然使用它.那么如何在不依赖于全部捕获的情况下捕获这样的异常,这可能是坏事.

除了str,e:没有抓住它?为什么?

系统:Python 2.5.2(r252:60911,2008年7月31日,17:28:52)[gCC 4.2.3(Ubuntu 4.2.3-2ubuntu7)] on linux2

python string exception

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

如果它太大,请将省略号添加到HTML文本

如果字符串太大,有没有办法在字符串中添加省略号(三个点)?

例如.

从:

This is a very large sentence.
Run Code Online (Sandbox Code Playgroud)

至:

This is a ve...
Run Code Online (Sandbox Code Playgroud)

它可以wordwrap在服务器端使用PHP来完成,但那时很难获得渲染的大小,那么在客户端使用JavaScript,HTML或CSS有更好的标准方法吗?

在这里,我已经包含了一张图片,以防万一你真的得不到我说的话.

例. ""

html javascript css

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

Django中的多态性

我有以下型号.如何从Entity表中访问继承表(Team和Athete)的unicode?我正在尝试显示所有显示"名称"的实体的列表,如果Team和'firstname'和'lastname',如果运动员.

class Entity(models.Model):
  entity_type_list = (('T', 'Team'), ('A', 'Athlete'))
  type = models.CharField(max_length=2, choices=entity_type_list,default='P') 
  pictureurl = models.URLField('Picture Url', verify_exists=False, max_length=255, null=True, blank=True)


class Team(Entity):

  name = models.CharField(max_length=100)

  def __unicode__(self):
    return self.name

class Athlete(Entity):

  firstname = models.CharField(max_length=100)
  lastname = models.CharField(max_length=100)

  def __unicode__(self):
    return '%s %s' % (self.firstname, self.lastname)
Run Code Online (Sandbox Code Playgroud)

python django inheritance

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

使用wxpython绘制一个圆圈

嗨,我正在使用wxpython绘制一个项目圈.请仔细查看代码并告诉我我做错了什么,它甚至没有显示任何错误,但也没有绘制圆圈.我只是得到一个空白的窗口.

import wx

class SketchFrame(wx.Frame):
    def __init__(self, parent):

        wx.Frame.__init__(self, parent, -1, "Sketch Frame",size=(350,350))
        self.sketch = SketchWindow(self, -1)


class SketchWindow(wx.Window):

    def __init__ (self, parent,ID):

        wx.Window.__init__(self, parent, ID)

        self.panel =wx.Panel(self, size= (350,350))

        self.InitBuffer()


    def InitBuffer(self):

        size=self.GetClientSize()
        self.Buffer=wx.EmptyBitmap(size.width,size.height)
        dc=wx.BufferedDC(None,self.Buffer)
        dc.SetBackground(wx.Brush(self.GetBackgroundColour()))
        dc.Clear()
        self.Drawcircle(dc)
        self.reInitBuffer=False


    def Drawcircle(self,dc):
        pen=wx.Pen('blue',4)
        dc.SetPen(pen)
        dc.DrawCircle(100,100,50)

    def OnPaint(self, event):
        dc = wx.BufferedPaintDC(self, self.buffer)



if __name__=='__main__':
    app=wx.PySimpleApp()
    frame=SketchFrame(None)
    frame.Show(True)
    app.MainLoop()
Run Code Online (Sandbox Code Playgroud)

谢谢

wxpython

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

使用Python的urllib2向网页发送请求

我有兴趣使用Python来自动执行某些任务.具体来说,我想使用Python与网站进行交互,以执行诸如从页面获取特定信息,发出请求(POST数据和阅读响应)以及下载和上载文件等任务.到目前为止,我只能使用Python从使用urllib2的页面获取HTML.我尝试的下一件事是向页面发送请求; 我做了几次尝试,但都失败了.

    >>> import urllib2
    >>> import urllib
    >>> url = "http://www.stackoverflow.com/"
    >>> values = {}
    >>> values["input"] = "foo"
    >>> data = urllib.urlencode(values)
    >>> request = urllib2.Request(url + "search/", data)
    >>> response = urllib2.urlopen(request)
    >>> html = response.read()
    >>> print html
Run Code Online (Sandbox Code Playgroud)

到目前为止我理解的方式是我需要创建一个包含字段和输入名称的字典,并使用urllib.urllencode(values)对其进行编码.然后我需要用urllib2.Request(theUrlReceivingTheRequest,data,headers)发出请求,如果只给出一个url只会GET,但是,如果给定数据,将POST,并且可以给出可以伪装程序的头文件常见的浏览器,如Firefox或IE.然后我用urllib2.urlopen(request)得到一个响应,它返回一个像object这样的文件,因此我可以读取().据我所知,我也可以使用urllib2.build_opener(),它可以接收处理程序(可以处理cookie,redirrections,身份验证等)并使用.addheaders("User-Agent","")添加标题.我希望能够最终做到(并理解)所有这些事情,但是,首先,我只想提交一份表格.在我与Python交互式会话的上述代码中,我是否遵循了正确的程序?(我试图在stackoverflow的首页上的搜索字段中输入"foo"搜索.)

python urllib2

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