【问题标题】:django display uploaded by user imagesdjango显示用户上传的图片
【发布时间】:2017-06-06 03:24:07
【问题描述】:

我有 ImageUploadField 我将图像保存在my_project/forum_attachments 目录中。

但是当我尝试显示它们并通过此链接查看时:http://127.0.0.1:8000/forum_attachments/1466786056166112161_Nrns2WL.jpg 我收到一个错误

找不到页面 (404) 请求方法:GET 请求 网址:http://127.0.0.1:8000/forum_attachments/1466786056166112161_Nrns2WL.jpg

我该怎么办?

UPD:urls.py

urlpatterns = [
    url(r'^polls/', include('some_app.urls')),
    url(r'^$', views.index, name='index'),
    url(r'^admin/', admin.site.urls),
    url(r'^about/', views.about, name='about'),
    url(r'^login/$', auth_views.login, name='login'),

    url(r'^user_logout/$', views.user_logout, name='user_logout'),
    url(r'^index_old/', views.index_old, name='index_old'),
    url(r'^forum/', views.forum, name='forum'),
    url(r'^vip/', views.vip, name='vip'),
    url(r'^test/', views.test, name='test'),
    url(r'^forum_new/', views.forum_new, name='forum_new'),
]

【问题讨论】:

  • 您需要使用MEDIA_URL前缀访问它。您在settings.py 中设置的MEDIA_URL 是什么?以及您在模板中的显示方式?
  • @AamirAdnan 我试过了:MEDIA_URL = '../forum_attachments/' and MEDIA_URL = '/forum_attachments/'
  • 给我看你的主要urls.py文件,你在处理媒体文件的服务吗? MEDIA_URL 在你的情况下需要是 /forum_attachments/
  • @AamirAdnan 查看更新

标签: django


【解决方案1】:

第一次设置在settings.py

MEDIA_URL = '/forum_attachments/'

然后在您的主要urls.py 中添加以下代码:

from django.conf.urls.static import static
from django.conf import settings

if settings.DEBUG:
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

【讨论】:

    【解决方案2】:

    如果您没有在设置或本地设置文件中设置您的 MEDIA_URL 和 MEDIA ROOT,您应该按照以下步骤操作。

    Settings.py

    import os
    
    BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
    
    PROJECT_PATH = os.path.abspath(os.path.dirname(__file__))
    
    MEDIA_ROOT = os.path.join(PROJECT_PATH,'../media/')
    
    MEDIA_URL = '/media/'
    
    STATICFILES_DIRS = (
         os.path.join(BASE_DIR, 'static'),
    )
    
    STATIC_ROOT = os.path.join(os.path.dirname(BASE_DIR), 'static')
    
    STATIC_URL = '/static/' 
    

    现在在您的 Urls.py 中,执行以下操作:

    from django.conf.urls.static import static
    
    urlpatterns = [
        url(r'^polls/', include('some_app.urls')),
        url(r'^$', views.index, name='index'),
        url(r'^admin/', admin.site.urls),
        url(r'^about/', views.about, name='about'),
        url(r'^login/$', auth_views.login, name='login'),
    
        url(r'^user_logout/$', views.user_logout, name='user_logout'),
        url(r'^index_old/', views.index_old, name='index_old'),
        url(r'^forum/', views.forum, name='forum'),
        url(r'^vip/', views.vip, name='vip'),
        url(r'^test/', views.test, name='test'),
        url(r'^forum_new/', views.forum_new, name='forum_new'),
    ]+ static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
    

    'static' 被附加到 urlpatterns 中,因为您的 DEBUG 可能在 settings.py 中设置为 True。

    【讨论】:

    • 这与我的forum_attachments 目录有什么关系?
    • 如果您的媒体文件位于“forum_attachments”而不是“media”文件夹中,请将媒体替换为“forum_attachments”。它将是 MEDIA_ROOT = os.path.join(PROJECT_PATH,'../forum_attachments/'), MEDIA_URL = '/forum_attachments/'
    猜你喜欢
    • 1970-01-01
    • 2016-12-13
    • 2017-10-12
    • 2020-01-25
    • 2017-09-04
    • 1970-01-01
    • 1970-01-01
    • 2016-05-04
    • 1970-01-01
    相关资源
    最近更新 更多