【发布时间】:2019-07-18 06:23:02
【问题描述】:
我制作了一个模板来列出带有下载链接的文档,但没有链接到:
它链接到:
在 myapp/templates/myapp/list.html
<ul>
{% for document in documents %}
<li><a href="{{ document.docfile.url }}">{{ document.docfile.name }}</a></li>
{% endfor %}
</ul>
document.docfile.url 实际上确实链接到 media/mydoc.csv 所以我猜它与模板引擎有关。
版本
- Python:3.7.2
- Django:2.1.7
- 操作系统:Windows 10
在 myapp/models.py 中
class Document(models.Model):
docfile = models.FileField(upload_to='documents')
在 myapp/views.py 中
def myview(request):
documents = Document.objects.all()
return render(request, 'myapp/list.html', {'documents': documents})
在 myapp/urls.py 中
app_name = 'myapp'
urlpatterns = [
path('', views.index, name='index'),
path('myview/', views.myview, name='myview'),
]
在 myproject/urls.py 中
urlpatterns = [
path('', views.index, name='index'),
path('myapp/', include('myapp.urls')),
path('admin/', admin.site.urls),
]
在 settings.py 中
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = 'media/'
因为它是我的第一个 Django 应用程序(也是第一个 web 应用程序),我想我错过了一些非常基本的东西。你有什么想法吗?
【问题讨论】:
-
不,这是设置
MEDIA_URL和MEDIA_ROOT的结果。
标签: python django django-templates