我目前有一个用Django编写的非常简单的Web应用程序,我想在我的应用程序中实现类似回调/推送通知服务.
例如:当一个用户(客户端)将照片上传到服务器时,服务器会通知所有其他连接的用户该照片.
我想我可以使用Django信号在用户上传照片时产生回调,但是如何让Django向其他用户发布通知呢?此通知可以是警报,也可以只是将其他用户重定向到显示上传图片的新html.我更喜欢后者.
我是网络编程的初学者,所以我不确定这是否适合需要实现彗星或长轮询等实时内容的"实时网络应用程序".我的应用程序类似于聊天应用程序,除了我不提交文本文件而是提交图像文件.因此,我认为彗星解决方案可行.我已经尝试过很长一段时间看Orbited和Twisted但是没有运气用Django实现它,可能是因为我不明白如何用彗星解决方案完成我想要的东西.我希望更有经验的程序员能够指出我为了实现这一点我需要什么,或者我是否朝着正确的方向前进(使用彗星).
如果有人能给我一些关于如何继续的提示和提示,以及教程链接或指南,我将非常感激.
我在Windows中尝试MySQL for Python(MySQLdb包),以便我可以在Django Web框架中使用它.
我刚刚安装了MySQL社区服务器5.5.9,我已经设法运行它并使用MySQL 5.5参考手册中建议的测试程序对其进行测试.但是,我发现我仍然没有MySQL AB文件夹,后续的MySQL Server 5.5文件夹和HKEY_LOCAL_MACHINE中的regkey,这是构建MySQLdb软件包所必需的.
从MySQL 5.5参考手册中可以看出:
MySQL安装向导在典型安装情况下创建一个Windows注册表项,位于HKEY_LOCAL_MACHINE\SOFTWARE\MySQL AB中.
但是,我确实安装了"开始菜单"快捷方式和所有程序文件.我使用msi安装并安装没有问题.我应该获取MySQL AB文件夹吗?有谁知道发生了什么以及我应该如何获得MySQL AB/MySQL Server 5.5文件夹和regkey?
我有一些关于保存登录用户的事情,save_model()和save_formset()来自Django的modelAdmin,我想问一下.
考虑一下,我有一个模型,用于拍摄用户通过http POST上传的照片.
在models.py中:
class photo(models.Model):
title = models.CharField(max_length=50)
img = models.ImageField(upload_to='photocollection')
uploader = models.ForeignKey(User)
latitude = models.FloatField(null=True, blank=True)
longitude = models.FloatField(null=True, blank=True)
def save(self):
#Retain the model instance to do some processing before saving:
self.latitude = exif.getGPSLatitude(self.img)
self.longitude = exif.GPSLongitude(self.img)
return super(photoCollection, self).save()
class photoForm(ModelForm):
class Meta:
model = photo
Run Code Online (Sandbox Code Playgroud)
然后在我的views.py中:
def upload(request):
form = photoForm(request.POST, request.FILES)
if form_is_valid():
#do something useful
form.save()
Run Code Online (Sandbox Code Playgroud)
在这里,我有一个有趣的场景.我的views.py中的表单无效,因为模型中的['uploader']字段永远不会更新,并且它是必填字段,因此不会保存.
1)如何获得表格验证?
另外,在保存表单时,我在这里看到了一篇文章,讲述了如何使用modelAdmin中的save_model()来保存ForeignKey(用户).通过在admin.py中创建一个photoAdmin类,我已尝试覆盖链接中显示的内容:
class photoAdmin(admin.ModelAdmin):
def save_model(self, request, obj, form, change):
if not change: …Run Code Online (Sandbox Code Playgroud)