[英]Django Media files and Retrofit
我們使用Android frontend
和django-rest-framework backend
開發一個項目。
媒體文件是通過Django Media files
,我們可以緩存媒體文件並在應用程序離線時查看它們。
urlpatterns = patterns('',
url(r'^admin/', include(admin.site.urls)),
url(r'auth/login/', 'rest_framework_jwt.views.obtain_jwt_token',name='jwt_login'), # post username & password to get token
...
) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
問題是我們需要對媒體文件應用授權,所以我media paths from urls
刪除了media paths from urls
並添加了一個視圖來完成這項工作
@api_view(['GET'])
def media_image_handler(request,url):
# extra code before serving media
...
...
# read and return media file to response
而 url.py 變成了這個:
urlpatterns = patterns('',
url(r'^media/(?P<url>.*)/$',media_image_handler, name='media'),
url(r'^admin/', include(admin.site.urls)),
url(r'auth/login/', 'rest_framework_jwt.views.obtain_jwt_token',name='jwt_login'),
)
現在我們有兩個問題:
現在的問題是:
有什么合適的方法可以代替嗎? 例如,不是使用完全身份驗證,而是使用無法輕易猜到的隨機生成的文件名或其他什么?
我們將不勝感激任何有用的意見
PS 我們在 Android 上使用 Retrofit 和 Picasso
首先:靜態文件應該由像 nginx 或 lighttpd 這樣的服務器提供。 關於你的問題。 我認為您在談論受控下載。 該功能調用X-Sendfile,在nginx等服務器中實現。 你可以在 Nginx 文檔中閱讀它。 https://www.nginx.com/resources/wiki/start/topics/examples/xsendfile/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.