簡體   English   中英

Django 媒體文件和改造

[英]Django Media files and Retrofit

我們使用Android frontenddjango-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'), 
)

現在我們有兩個問題:

  1. 由於額外的代碼響應時間變得更高
  2. 緩存文件無法離線加載

現在的問題是:

有什么合適的方法可以代替嗎? 例如,不是使用完全身份驗證,而是使用無法輕易猜到的隨機生成的文件名或其他什么?

我們將不勝感激任何有用的意見

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM