Django 显示用户上传的内容
Django display user uploaded content
我还没有全神贯注于 django 和 URLs,现在我的困惑让我无法完成我认为应该是一项非常简单的任务。
我已经成功实现了文件上传。
在我的 settings.py 文件中,我添加了有关存储上传文件的位置以及 URL Django 应该用来为它们提供服务的规范。
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL= '/media/'
我还在 urls.py 中添加了必要的行,以允许 Django 提供来自 MEDIA_URL.
的文件
from django.conf.urls import url, include
from django.contrib import admin
from login_app import views as login_app_views
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^login/', login_app_views.login_user),
# creating registered namespaces for each app
url(r'^login/', include('login_app.urls', namespace = "login_app")),
url(r'^CMIRS/', include('dashboard_app.urls', namespace = "dashboard_app")),
url(r'^CMIRS/', include('submit_app.urls', namespace = "submit_app")),
url(r'^CMIRS/', include('filter_app.urls', namespace = "filter_app")),
url(r'^CMIRS/case/',include('report_app.urls', namespace = "report_app")),
url(r'^CMIRS/', include('search_app.urls', namespace = "search_app")),
url(r'^search/', include('haystack.urls')), ##used in navbar-search
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
在应用程序 report_app 中,我希望网页显示可用于查看上传文件的超链接。当我单击超链接时,我希望它向上传的文件请求 URL。
上传在我的模型中看起来像这样:
upload1 = models.FileField(upload_to = 'documents/%Y/%m/%d/')
我无法确定在我看来在渲染(请求)中使用什么以及如何在 HTML 中正确编码。当我尝试使用 "media" 时,出现无法匹配的错误消息。
这是我正在尝试的 HTML 的片段:
<dt>Upload</dt><dd><tr><td><a href="{% url 'media' case.pk %}">{{ case.upload1 }}</a></td></tr></dd>
我也很困惑如何设置我的渲染(请求)以便它知道访问媒体/,然后根据主键转到正确的 documents/Y/M/D。
您根本不想在这里使用 url 标签。你的媒体的 URL 存储在你的模型中,与 Django 的路径解析逻辑无关。只需引用字段的url
方法:
<a href="{{ case.upload1.url }}">
参见the docs。
(另请注意,像这样通过您的 urls.py 提供文件仅适用于开发人员;对于产品,您需要配置您的网络服务器才能执行此操作。)
我还没有全神贯注于 django 和 URLs,现在我的困惑让我无法完成我认为应该是一项非常简单的任务。
我已经成功实现了文件上传。
在我的 settings.py 文件中,我添加了有关存储上传文件的位置以及 URL Django 应该用来为它们提供服务的规范。
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL= '/media/'
我还在 urls.py 中添加了必要的行,以允许 Django 提供来自 MEDIA_URL.
的文件from django.conf.urls import url, include
from django.contrib import admin
from login_app import views as login_app_views
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^login/', login_app_views.login_user),
# creating registered namespaces for each app
url(r'^login/', include('login_app.urls', namespace = "login_app")),
url(r'^CMIRS/', include('dashboard_app.urls', namespace = "dashboard_app")),
url(r'^CMIRS/', include('submit_app.urls', namespace = "submit_app")),
url(r'^CMIRS/', include('filter_app.urls', namespace = "filter_app")),
url(r'^CMIRS/case/',include('report_app.urls', namespace = "report_app")),
url(r'^CMIRS/', include('search_app.urls', namespace = "search_app")),
url(r'^search/', include('haystack.urls')), ##used in navbar-search
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
在应用程序 report_app 中,我希望网页显示可用于查看上传文件的超链接。当我单击超链接时,我希望它向上传的文件请求 URL。
上传在我的模型中看起来像这样:
upload1 = models.FileField(upload_to = 'documents/%Y/%m/%d/')
我无法确定在我看来在渲染(请求)中使用什么以及如何在 HTML 中正确编码。当我尝试使用 "media" 时,出现无法匹配的错误消息。
这是我正在尝试的 HTML 的片段:
<dt>Upload</dt><dd><tr><td><a href="{% url 'media' case.pk %}">{{ case.upload1 }}</a></td></tr></dd>
我也很困惑如何设置我的渲染(请求)以便它知道访问媒体/,然后根据主键转到正确的 documents/Y/M/D。
您根本不想在这里使用 url 标签。你的媒体的 URL 存储在你的模型中,与 Django 的路径解析逻辑无关。只需引用字段的url
方法:
<a href="{{ case.upload1.url }}">
参见the docs。
(另请注意,像这样通过您的 urls.py 提供文件仅适用于开发人员;对于产品,您需要配置您的网络服务器才能执行此操作。)