【问题标题】:Django display user uploaded contentDjango 显示用户上传的内容
【发布时间】:2016-09-07 03:51:09
【问题描述】:

我还没有完全理解 django 和 URL,现在我的困惑让我无法做我认为应该是一项非常简单的任务。

我已经成功实现了文件上传。

在我的 settings.py 文件中,我添加了关于存储上传文件的位置的规范以及 Django 应该用来提供它们的 URL。

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)

在应用程序报告应用程序中,我希望网页显示可用于查看上传文件的超链接。当我单击超链接时,我希望它请求上传文件的 URL。

上传在我的模型中看起来像这样:

upload1 = models.FileField(upload_to = 'documents/%Y/%m/%d/')

我无法确定在我的视图中在渲染(请求)中使用什么以及如何在 HTML 中正确编码。当我尝试使用“媒体”时,我收到一条错误消息,指出无法匹配。

这是我正在尝试的 HTML 的 sn-p:

<dt>Upload</dt><dd><tr><td><a href="{% url 'media' case.pk %}">{{ case.upload1 }}</a></td></tr></dd>

我也很困惑如何设置我的渲染(请求),以便它知道访问媒体/,然后根据主键转到正确的文档/Y/M/D。

【问题讨论】:

    标签: python django upload render django-urls


    【解决方案1】:

    您根本不想在这里使用 url 标签。您的媒体 URL 存储在您的模型中,与 Django 的路径解析逻辑无关。只需引用该字段的url 方法即可:

    <a href="{{ case.upload1.url }}">
    

    the docs

    (另请注意,像这样通过您的 urls.py 提供文件仅在 dev 中有效;对于 prod,您需要配置您的网络服务器来执行此操作。)

    【讨论】:

    • 谢谢!关于如何格式化渲染(请求、模板、上下文)请求的任何建议?我假设我不需要模板,因为我只想显示上传的文件,但我不知道如何正确处理文件的 url。
    • 不,因为我不明白你在说什么渲染。
    • 对不起!那是因为这与我的问题无关。您提供给我的新代码没有给我任何错误,但是当我单击实际的超链接时,它不会将我转移到文件中。我需要添加什么才能使其正常工作?
    • 它带你去哪里?你看到什么错误? (注意,我刚刚注意到我的手机自动更正了代码;它应该全部小写,现在编辑 - 这可能会解决您看到的任何问题。)
    • 解决了!之前,它只是停留在同一页面上(没有错误,没有重定向)。
    猜你喜欢
    • 2011-02-28
    • 1970-01-01
    • 2011-08-24
    • 1970-01-01
    • 2019-06-07
    • 1970-01-01
    • 2011-02-12
    • 2016-05-04
    • 1970-01-01
    相关资源
    最近更新 更多