Django应用程序处理按会话和捆绑包分组的附件(临时上载)。即使是匿名用户

django-session-attachments的Python项目详细描述


此应用程序旨在与Django中的附件一起工作。

基本上使用附件和使用普通附件是一样的 上传,除了一些区别:

  • 附件“属于”他们上传的客户端。换句话说, 附件必须是私有的,并且不能被公共访问
  • 附件被组织成“捆绑包”如果你的客户决定 在应用程序的不同部分中使用不同的附件集 (例如,他/她同时写了几封电子邮件或请求, 显然不想在收件人之间共享他/她的附件。)
  • 附件是临时的必须有简单的方法来移除附件 手动或到期。
  • 即使未经验证的用户也必须可以使用附件。是因为我们 具体细节这也是我们创建此应用程序的主要原因
  • 不可能在同一个文件中存储两个同名的附件 捆绑。新附件覆盖上一个附件。看起来很正常 给定应用程序用例的限制

安装和配置

从pypi或github安装应用程序:

$ pip install django-session-attachments  # or
$ pip install git://github.com/NetAngels/django-session-attachments.git#egg=django-session-attachments

将新应用程序添加到设置文件:

INSTALLED_APPS = [
    'django.contrib.staticfiles',
    ...
    'session_attachments',
    ...
]

在urlconf(urls.py)中添加新行:

urlpatterns = patterns('',
    ...
    url(r'^attachments/', include('session_attachments.urls')),
    ...
)

有一个单独的django模型来保存附件,因此您应该键入:

./manage.py syncdb session_attachments

如何使用

如果您的应用程序在localhost:8000上可用,您将得到以下结果 从前端使用的URL数。可能会更容易 使用jquery forms扩展或其他东西异步处理后端 类似的。

为了简单起见,下面的示例使用curl因为附件是绑定的 对于会话,在curl调用之间保留会话cookie是很重要的。 我们通过将--cookie session.txt --cookie-jar session.txt选项传递给 旋度。

请注意,除非csrf中间件是 在设置中禁用。

将文件上载到捆绑包

将文件post数据上载到/attachments/<bundle_id>/url。表格必须 至少包含一个文件字段。文件字段的名称可以是任意的,因为它们 被应用程序忽略:

$ echo spam > spam.txt
$ echo egg > egg.txt
$ curl --cookie session.txt --cookie-jar session.txt -F attach1=@spam.txt -F attach2=@egg.txt -X POST http://localhost:8000/attachments/foo/
[{"name": "egg.txt", ...}, {"name": "spam.txt", ...}]

获取捆绑包中的附件列表

$ curl --cookie session.txt --cookie-jar session.txt -X GET http://localhost:8000/attachments/foo/
$ [{"mimetype": "text/plain", "size": 4, "name": "egg.txt", "created": "2011-12-29 04:12"}, {"mimetype": "text/plain", "size": 5, "name": "spam.txt", "created": "2011-12-29 04:12"}]

返回json格式的dict列表。

从捆绑包下载文件

$ curl --cookie session.txt --cookie-jar session.txt -X GET http://localhost:8000/attachments/foo/spam.txt/
spam

从捆绑包中删除附件

$ curl --cookie session.txt --cookie-jar session.txt -X POST http://localhost:8000/attachments/foo/spam.txt/delete/
[true]

清理整个包裹

$ curl --cookie session.txt --cookie-jar session.txt -X POST http://localhost:8000/attachments/foo/delete/
[[true]]

清除过期附件的管理命令

有一个管理命令从 捆绑。要设置删除的阈值,您可以通过天数:

./manage.py remove_outdated_attachments --older-than=3

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何在Android Wifi中筛选相同的SSID?   Java中重写接口中异常处理的泛型   java“无效转义序列(有效的是\b\t\n\f\r\”\“\”\)”语法错误   使用JNDI的java NameReadyBoundException   java如何在这个程序上执行算法   java为什么我的应用程序在调试时崩溃而应用程序停止?   Java:while循环未检测到中断条件,但如果块检测到   java如何快速使用jfreechart创建的折线图   java将输入放入JSTL会话变量,以便稍后在屏幕上显示   java在spring boot中加载外部JAR   java Apache NiFi无法使用ojdbc6连接到Oracle 12c。jar或ojdbc8。罐子   java解释StringToWordVector()Weka的输出   java charAt()找不到符号   使用mpjexpress的java阅读控制台输入