sai*_*kat 1 python django rest django-views django-rest-framework
我创建了一个 django 休息模型,其中包括一个 FileField。
media = models.FileField(upload_to='media/%Y/%m/%d/', null=True, blank=True)
Run Code Online (Sandbox Code Playgroud)
我还实现了序列化器和 ListCreateApiView。在那里我可以上传文件。在 POST 请求中,其余服务器上传文件夹中的文件并返回 url。但是,在 get 请求时,服务器会返回带有 url 的 json 内容。如果我使用 url 进行 get 请求,服务器会响应Page Not Found。如何使用djangorest下载上传的文件?我是否必须为其创建单独的视图?如果是这样,该怎么做?
编辑:
生成的网址是
http://localhost:8000/message/media/2015/12/06/aa_35EXQ7H.svg
Run Code Online (Sandbox Code Playgroud)
您必须定义并MEDIA_ROOT注册MEDIA_URL以允许 Django 服务器提供这些文件。MEDIA_URLurlpatterns
按着这些次序:
settings.py文件:
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, "media_root")
Run Code Online (Sandbox Code Playgroud)
将其附加到您的主urls.py文件中以提供媒体文件:
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
# ... the rest of your URLconf goes here ...
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
Run Code Online (Sandbox Code Playgroud)
另外,您不必在属性media中再次添加upload_to,因为它前面带有MEDIA_URL,那么 url 将为/media/media/。
这是一个正确的例子:
media = models.FileField(upload_to='message/%Y/%m/%d/', null=True, blank=True)
Run Code Online (Sandbox Code Playgroud)
媒体的 URL 为:
http://localhost:8000/media/message/2015/12/06/aa_35EXQ7H.svg
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5128 次 |
| 最近记录: |