小编Jon*_*Cox的帖子

Django:在同一视图中设置会话并获取会话密钥

我想将一些东西存储在数据库中,并使用当前会话作为外键:来自models.py

class Visited(models.Model):
    session = models.ForeignKey(Session)
    page = models.ForeignKey(Page)
    times_visited = models.PositiveIntegerField()
    ip_address = models.IPAddressField()
    date_last_visited = models.DateTimeField()
    def __unicode__(self):
        return u'(%s, %s)' % (str(self.session.session_key), str(self.page.name))
Run Code Online (Sandbox Code Playgroud)

要为此模型创建一个新条目,我使用以下内容来获取当前会话(在views.py中):

Session.objects.get(session_key=request.session.session_key)
Run Code Online (Sandbox Code Playgroud)

但是,如果这是用户第一次访问该站点,因此尚未设置cookie,则上述代码将产生DoesNotExist错误.


我知道即使现在有cookie设置,你仍然可以设置会话对象.所以我可以想到一些黑客来完成这项工作,例如:

  • 将唯一标识符设置为会话对象(除了会话密钥)
  • 暂时将我希望添加到数据库中的数据存储到会话对象中,并使用装饰器函数在使用会话之前检查它是否存在.
  • 只使用会话对象而不是在数据库中存储任何东西(这在技术上是可行的,但对于我的实现,它将依赖于Python字典 - 有几百个条目 - 至少与排序等数据库一样有效.)


但我想要一个更好的解决方案,我可以忍受.这个问题是否有任何普遍使用或良好的解决方案?或者我甚至在我的模型中正确引用会话?

谢谢您的帮助.

django django-models django-sessions

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

用于存储和查询地理坐标的Python模块

是否有一个Python模块,我可以创建具有地理位置坐标(纬度和经度)的对象,并查询所有对象是否在给定坐标的5公里距离(即半径)内?

我一直试图将纬度和经度存储为字典中的键(因为它们被键索引)并使用一些距离查找算法来查询它们.但这感觉就像一个可怕的黑客.

基本上就像PostGIS for PostgreSQL,但都在我的Python应用程序的内存中.

python geolocation geospatial coordinates geographic-distance

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

Flask/Werkzeug如何将HTTP内容长度标头附加到文件下载

我正在使用使用Python的Flask(基于Werkzeug).

用户可以下载文件,我正在使用send_from_directory-function.

但是,实际下载文件时,content-length不会设置HTTP标头.因此用户不知道要下载的文件有多大.

我可以os.path.getsize(FILE_LOCATION)在Python 中使用来获取文件大小(以字节为单位),但无法找到content-length在Flask中设置标头的方法.

有任何想法吗?

python download werkzeug http-headers flask

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

Django,如何在管理界面中查看会话数据

我正在使用Django会话,我想在管理界面中查看会话数据.这可能吗?

即对于每个会话,我想看到存储在会话数据库中的数据(就我所能收集而言,这本质上是一个字典).

目前我只能看到该Session data字段中的哈希,例如:

gAJ9cQEoVQ5zb3J0aW5nX2Nob2ljZXECVQJQT3EDVQxnYW1lc19wbGF5ZWRxBH1xBVgLAAAAcG9z
dG1hbi1wYXRxBksDc1UKaXBfYWRkcmVzc3EHVQkxMjcuMC4wLjFxCFUKdGVzdGNvb2tpZXEJVQZ3
b3JrZWRxClUKZ2FtZV92b3Rlc3ELfXEMdS4wOGJlMDY3YWI0ZmU0ODBmOGZlOTczZTUwYmYwYjE5
OA==
Run Code Online (Sandbox Code Playgroud)


我已将以下内容放入admin.py中以实现此目的:

from django.contrib.sessions.models import Session
...
admin.site.register(Session)
Run Code Online (Sandbox Code Playgroud)


特别是我希望能够至少看到每个会话的IP地址.(如果我可以计算每个IP地址的会话数,并根据每个IP地址的总数来订购IP,那也会很好.)

谢谢您的帮助 :-)

python django django-sessions

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

烧瓶/ Python.从上传的文件中获取mimetype

我正在使用Flask微框架0.6和Python 2.6

我需要从上传的文件中获取mimetype,以便我可以存储它.

这是相关的Python/Flask代码:

@app.route('/upload_file', methods=['GET', 'POST'])
def upload_file():
    if request.method == 'POST':
        file = request.files['file']
        mimetype = #FIXME
        if file:
            file.save(os.path.join(UPLOAD_FOLDER, 'File-Name')
            return redirect(url_for('uploaded_file'))
        else:
            return redirect(url_for('upload'))
Run Code Online (Sandbox Code Playgroud)


这是网页的代码:

<form action="upload_file" method=post enctype=multipart/form-data> 
Select file to upload: <input type=file name=file> 
<input type=submit value=Upload> 
</form> 
Run Code Online (Sandbox Code Playgroud)


代码有效,但我需要能够在上传时获取mimetype.我在这里看过Flask文档:http ://flask.pocoo.org/docs/api/#incoming-request-data
所以我知道它确实得到了mimetype,但我无法弄清楚如何检索它 - 作为文本字符串,例如'txt/plain'.

有任何想法吗?

谢谢.

python webforms flask

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

iOS应用程序,具有来自服务器的实时更新:套接字(使用流)或Apple推送通知服务?

我正在尝试制作一个iOS 5应用程序,其中包含来自服务器的实时内容.它只会在应用程序运行时使用这些.

为了实现无需轮询的实时性,我一直在评估两条设计路线:


从应用程序到服务器创建套接字,并通过流交换信息.

使用标准HTTP与服务器通信,并使用来自应用程序的每个请求让服务器知道他们正在查看的内容.如果有新功能可供用户使用,请发送Apple推送通知(没有可见警报),让应用知道它可以下载新内容.


我认为套接字是可行的方法,但在我承诺之前,我想要第二个意见,因为这是我第一次做出这样的事情!

iostream apple-push-notifications ios ios5

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

在HTML电子邮件中包含图像的最佳方式?

我正在创建一些包含图像的HTML电子邮件.对于每封电子邮件,图片+电子邮件的大小小于150kb.

我正在努力让它们适用于这里提到的主要客户http://www.campaignmonitor.com/resources/will-it-work/email-clients/


据我所知,通过电子邮件包含图像有两种主要方式:

  • 直接嵌入图像.

    • 优点:一旦打开电子邮件(大多数客户端),图像就会加载.
    • 缺点:在移动浏览器上似乎不能很好地工作.


  • 自己托管,只需在电子邮件中使用链接即可
    • 优点:似乎具有更好的兼容性.
    • 缺点:接收方始终必须单击"显示所有图像"按钮/链接,增加了在服务器上维护图像的复杂性.


在我看来,嵌入图像将是最好的解决方案,因为这意味着用户将在打开电子邮件后立即看到它们.这是正确的还是你会建议另一种方式?

非常感谢您的帮助 :-)

email email-client html-email email-attachments

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

将倒圆叠加添加到地图视图

(使用iOS 5和Xcode 4.2.)

我按照这里的说明操作:http://developer.apple.com/library/ios/#documentation/UserExperience/Conceptual/LocationAwarenessPG/AnnotatingMaps/AnnotatingMaps.html#//apple_ref/doc/uid/TP40009497-CH6-SW15并使用MKCircleMKCircleView类在我的MKMapView上添加圆形覆盖.

然而我真正想要的是倒圆形叠加,就像下面草图中的左侧地图(目前我有一个像右边那样的圆形叠加):

倒置和非倒置圆形覆盖草图

对于倒圆,叠加应覆盖整个地图 - 除了可见圆.

有没有一种简单的方法可以使用MKCircle/MKCircleView类来实现这一目的?或者我是否需要更深入地定义自定义叠加对象/视图?

谢谢您的帮助 :)

mapkit ios mkoverlay ios5

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

在Amazon EC2上扩展Tigase XMPP服务器

有没有人有在亚马逊的EC2上运行集群Tigase XMPP服务器的经验,主要是我希望了解任何可能让我失望的事情,这是非常明显的.(例如,显然在EC2上运行Ejabberd可能会因Mnesia而导致问题.)

或者,如果您有任何关于在Ubuntu上安装和运行Tigase的一般建议.


额外的信息:

我正在开发的系统使用XMPP只是为了在移动应用程序和服务器之间进行通信(几乎是实时的).

用户数量最初会很小,但希望会增长.这就是系统需要可扩展的原因.大概只有几千个用户你不需要一个cc1.4xlarge EC2实例?(否则这将是非常昂贵的运行!)

我计划将Amazon RDS中托管的MySQL数据库用于XMPP服务器数据库.

我还计划使用SleekXMPP创建一个用Python编写的外部XMPP组件.正是这个外部组件完成了服务器的所有"工作",因为我正在制作的应用程序与即时消息完全不同.对于这部分,我还没有弄清楚如何将用Python编写的外部XMPP组件连接到Tigase服务器.该文档似乎表明组件是专门为Tigase编写的 - 而不是一般的XMPP服务器,使用XEP-0114:Jabber组件协议,正如我所料.

有了这些额外的信息,如果你能想到我应该知道的任何其他事情,我会很高兴知道.

谢谢 :)

xmpp amazon-ec2 tigase

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

将额外的行添加到由NSFetchedResultsController管理的UITableView

UITableViewController在我的应用程序中使用了一个表,并且我添加了一个NSFetchedResultsController用于提供要在表中显示的数据(设置self为它的委托).

但是我想添加一个唯一的单元格作为表格的最后一个单元格,与NSFetchedResultsController谓词生成的项目无关,我希望这个单元格始终位于表格的底部.

我试过在表视图数据源中简单地将这些方法添加1:

- (NSUInteger)numberOfSectionsInTableView:(UITableView *)sender
{
    return [[self.fetchedResultsController sections] count] + 1;
}
- (NSUInteger)tableView:(UITableView *)sender numberOfRowsInSection:(NSUInteger)section
{
    return [[[self.fetchedResultsController sections] objectAtIndex:section] numberOfObjects] + 1;
}
Run Code Online (Sandbox Code Playgroud)

然后捕获这样生成这个额外行的情况(该表只有1个部分):

- (UITableViewCell *)tableView:(UITableView *)sender
         cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (indexPath.row == [self.fetchedResultsController.fetchedObjects count]) {
        //Generate the last cell in  table.
    } else {
        //Generate the rest of the cells like normal.
    }
    return nil; //To keep the compiler happy.
}
Run Code Online (Sandbox Code Playgroud)

这将检查索引是否是最后一个单元格并正确处理它.

但是,我仍然在运行时收到以下错误:

*** Terminating app …
Run Code Online (Sandbox Code Playgroud)

uitableview nsfetchedresultscontroller ios ios5

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