小编sha*_*nyu的帖子

处理例外的设计 - 谷歌应用引擎

我正在谷歌应用引擎(webapp框架)上开发一个项目.我需要你的人来评估我如何处理异常.

我正在处理4种类型的例外:

  1. 编程异常
  2. 用户输入不好
  3. 网址不正确
  4. 查询字符串不正确

以下是我处理它们的方法:

  1. 我已经将webapp.requesthandler类子类化,并覆盖了handle_exceptions方法.每当发生异常时,我都会将用户带到友好的"我们很抱歉"页面,同时向管理员发送带有回溯的消息.

  2. 在客户端,我(将)使用js并在服务器端验证.除了根据编程逻辑验证输入(检查:现金输入是浮动类型?)和业务规则(检查:用户是否有足够的点来采取该行动?),我在这里(作为具有非网络经验的编码器) ,我还要检查恶意意图.我应该采取什么措施来对付恶意行为?

  3. 我有一个处理错误URL的catch-all URL.也就是说,我将用户带到一个自定义的"页面不存在"页面.我想在这里我没有任何问题.

  4. 错误的查询字符串可能会引发异常,如果留给他们自己.如果ID不存在,则该方法返回None(异常即将发生).如果参数不方便,代码会引发异常.在这里,我认为我必须提出404并将用户带到自定义"页面不存在"页面.我该怎么办?

你有什么看法?提前致谢..

python google-app-engine exception-handling web-applications

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

我应该放弃Google App Engine吗?

我正在开发GAE的某种金融市场模拟.虽然我已经取得了很大的进步,但我已经开始考虑在最近几天解雇GAE并寻找Django + rdbms解决方案.让我说明我的理由:

  1. 交易:GAE支持单个实体组的交易.如果应用程序涉及复杂的交易,例如金融市场中的交易,则不能使用此机制(读取:没有可用的交易机制).一些高级用户已经开发出解决这个问题的解决方案,但尚未发布,据说只能在java中使用.

  2. 全文检索:具有讽刺意味的是,但目前存在一种非常原始的API.此外,路线图中未提及改进.

  3. 分页:开发一个友好的分页机制不适合胆小的(或截止期限).

  4. 后台流程:批次在财务应用程序中很重要,目前我必须尝试使用​​Cron.但我认为后台流程已在路线图中,并将在短时间内提供.

我选择GAE是为了缩短开发时间并轻松应对未来可能出现的可扩展性问题.我非常喜欢GAE,它具有一些优秀的功能,但是将这些问题放在一起需要花费太多精力,并且可能首先取消使用GAE的任何好处.

如果你是我,你会怎么做?

django google-app-engine web-frameworks

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

Django - 使用新消息框架将消息留给(离线)用户

所以message_set不赞成使用新的消息框架.好老message_set允许我留言给离线用户(例如,当我在cron作业中做一些事情时,我可能想要通知一些用户).现在看一下新框架,似乎只能将消息添加到request对象中.

我是否遗漏了任何内容,或者是将信息添加到user对象中的功能,这意味着我必须自己滚动?

django

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

使用Django ORM基于最大值获取单个子行

我有一个模型,"市场"与另一个模型有一对多的关系,"合同":

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

class Contract(models.Model):
    name= ...
    market = models.ForeignKey(Market, ...)
    current_price = ...
Run Code Online (Sandbox Code Playgroud)

我想以每个的最高价格获取市场对象以及合约.这是我通过原始SQL做的方式:

SELECT M.id as market_id, M.name as market_name, C.name as contract_name, C.price 
as price from pm_core_market M INNER JOIN
    (SELECT market_id, id, name, MAX(current_price) as price 
        FROM pm_core_contract GROUP BY market_id) AS C
ON M.id = C.market_id
Run Code Online (Sandbox Code Playgroud)

有没有办法在不使用SQL的情况下实现它?如果有的话,哪个应该是性能优先?

sql django inner-join django-orm

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

python PIL - 背景显示不透明而不是透明

我想从上传的图像(实际是头像)生成32x32大小的缩略图.

为了防止缩略图小于该大小,我想创建一个透明的32x32背景并粘贴缩略图.

下面的代码试图这样做.然而,化身显示在黑色和不透明的背景上; 我在整个过程中丢失了透明度信息.我哪里做错了?

def handle_image(img):
    size = SMALL_AVATAR_IMAGE_SIZE
    img.thumbnail(size, Image.ANTIALIAS)  
    img = img.convert('RGBA')
    background = Image.new('RGBA', size, (255, 255, 255, 0))
    background.paste(img, (0, (size[1] - img.size[1]) / 2), img)
    img = background
    processed_image_small = ContentFile(img.tostring('jpeg', img.mode))
    targetpath = str(self.user.id) + '_S' + '.jpg'
    self.img_small.save(targetpath, processed_image_small,save=False)
Run Code Online (Sandbox Code Playgroud)

python django image

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

搜索Django的功能

我正在使用Django开发一个Web应用程序,我需要尽快添加搜索功能.搜索将两个模型来实现,一个是auth用户类的扩展和另一个领域name,tagsdescription.所以我想在搜索文本的上下文中没什么可怕的.

对于开发我使用的是SQLite,并且由于没有完成数据库特定的工作,我可以自由地在生产中使用任何数据库.我正在考虑在PostgreSQLMySQL之间进行选择.

我已经在互联网上发了几篇关于搜索解决方案的帖子,但是我想就我的简单案例得到意见.这是我的问题:

  1. 在我的情况下,全文搜索是否有效?

  2. 依靠数据库的全文搜索支持更好吗?如果是这样,我应该使用哪个数据库?

  3. 我应该使用外部搜索库,例如Whoosh,Sphinx还是Xapian?如果是这样,哪一个?

EDIT: tags是一个Tagfield(来自django-tagging应用程序),它位于m2m关系上.description是一个包含HTML的字段,其max_length为1024字节.

python database django search full-text-search

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

django模型类中的keyerror __init__

这是我写的Django模型类.当我get_object_or_404从Django 调用时,这个类得到了一个keyerror (我认为由于__init__get函数没有传递kwargs,所以引发了keyerror ,参数都是位置的).有趣的是,当我get_object_or_404从控制台调用时,它不会出错.

我想知道为什么,如果下面的代码是正确的方式(即使用init来填充链接字段)来构造这个类.

class Link(models.Model)

    event_type = models.IntegerField(choices=EVENT_TYPES)
    user = models.ForeignKey(User)
    created_on = models.DateTimeField(auto_now_add = True)
    link = models.CharField(max_length=30)
    isActive = models.BooleanField(default=True)

    def _generate_link(self):
        prelink = str(self.user.id)+str(self.event_type)+str(self.created_on)
        m = md5.new()
        m.update(prelink)
        return m.hexdigest()

    def __init__(self, *args, **kwargs):
        self.user = kwargs['user'].pop()
        self.event_type = kwargs['event_type'].pop()
        self.link = self._generate_link()
        super(Link,self).__init__(*args,**kwargs)
Run Code Online (Sandbox Code Playgroud)

python django django-models

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

依赖隐藏的输入和查询字符串

假设我有一个接受参数的请求处理程序:key

并请求:

http://example.com/2323

当处理程序收到GET时,将根据此密钥从db中提取相关数据,并将其提供给表单并显示.在此过程中,key的值被放入隐藏的输入中.

当它收到POST时,它具有来自查询字符串的键参数,以及来自隐藏输入的键,它们是相同的,只要用户没有篡改它们.

我想知道当表单上的数据保存到db时,我应该依赖它是隐藏的输入还是查询字符串参数.问题是用户可以在发布之前修改查询字符串,就像隐藏的输入也可以被修改一样,因为源是对用户开放的.

language-agnostic

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