我有一个File
模型,它存储path
文件系统中的字段 - 文件路径.所有文件都存储在MEDIA_ROOT /文件中
在模板中我想生成File
对象的下载链接.做这个的最好方式是什么?我应该在django中使用静态文件处理吗?
TIA!
UPD
File
模型
class File(models.Model):
item = models.ForeignKey(Item)
file = models.FileField(upload_to = os.path.join(MEDIA_ROOT,'items'))
format = models.CharField(max_length = 255)
Run Code Online (Sandbox Code Playgroud)
在项目视图中,我执行以下操作:
files = File.objects.filter(item_id = id)
并传递files
给模板
在我使用的模板中files.1.file.url
,例如仍然有坏网址site.com/home/dizpers/...
UPD2
解
我的问题出现在文件模型中,在file
字段中.在upload_to参数中我使用绝对路径,但必须使用相对路径:
file = models.FileField(upload_to = 'items')
在models.py
:
import os
from django.conf import settings
from django.db import models
class File(models.Model):
... (your existing File model)
@property
def relative_path(self):
return os.path.relpath(self.path, settings.MEDIA_ROOT)
Run Code Online (Sandbox Code Playgroud)
(使用从值中剥离的relpath
方法)MEDIA_ROOT
self.path
在您的file_detail.html
(或等效的)模板中:
<a href='{{ MEDIA_URL }}{{ file.relative_path }}'>{{ file.name }}</a>
Run Code Online (Sandbox Code Playgroud)
NB说,克里斯说,最好在FileField
这里使用.上述内容有望适用于您的具体情况,但除非您非常致力于以这种方式安排事情,否则我建议您转到专用领域.
尝试使用href="{{ STATIC_URL }}/files/somefile"
, 或href="{{ MEDIA_URL }}/files/somefile"
对于用户上传的内容
归档时间: |
|
查看次数: |
20374 次 |
最近记录: |