【问题标题】:django media files on develop开发中的 django 媒体文件
【发布时间】:2013-09-02 03:00:31
【问题描述】:

我使用 Django 1.5.1 / python 2.7.3 还有virtualenv

我不能正确地将我的媒体委托给“django.contrib.staticfiles.views”,其中存储了由应用程序 django-ckeditor 在管理界面上传的文件

静态文件效果很好,但媒体(用户图像)效果不佳。例如它返回

http://127.0.0.1:8000/media/home/raido/dev/project/project/media/Raido/2013/08/28/4bebf51c0a5b.jpg

如果我调整到http://127.0.0.1:8000/media/Raido/2013/08/28/4bebf51c0a5b.jpg 的链接,它会返回 404,并调试我的网址

我的 urls.py

from django.conf.urls import patterns, url, include
from lessons.views import LessonListView, LessonDetailView
from ckeditor import urls 

from django.conf import settings
from django.conf.urls.static import static
from django.contrib.staticfiles.urls import staticfiles_urlpatterns

urlpatterns = patterns('',
url(r'^$', LessonListView.as_view(), name='list'),
url(r'^(?P<pk>\d+)/$', LessonDetailView.as_view()),
url(r'^ckeditor/', include('ckeditor.urls')),
) 

if settings.DEBUG:
    urlpatterns += patterns('django.contrib.staticfiles.views',
        url(r'^static/(?P<path>.*)$', 'serve'),
        url(r'^media/(?P<path>.*)$', 'serve'),
    )

settings.py

import os
_PATH = os.path.dirname(os.path.abspath(__file__))
MEDIA_ROOT = "/home/raido/dev/project/project/media/"
MEDIA_URL = '/media/'
STATIC_ROOT = "/home/raido/dev/project/project/static"
STATIC_URL = '/static/'
STATICFILES_DIRS = (    
    ...
    os.path.join(_PATH, 'static'),
)
TEMPLATE_DIRS = (
    os.path.join(_PATH, 'templates'),
)
TEMPLATE_CONTEXT_PROCESSORS = (
   ....
   'django.core.context_processors.static',
)
CKEDITOR_UPLOAD_PATH = "/home/user/dev/project/project/media/"
CKEDITOR_RESTRICT_BY_USER = True

我的树 -L 4

.
├── deploy
│   └── nginx
│       ├── project.conf
│       └── projectDeploy.conf
├── favicon.ico
├── lessons
│   ├── admin.py
│   ├── admin.pyc
│   ├── __init__.py
│   ├── __init__.pyc
│   ├── migrations
│   │   ├── 0001_initial.py
│   │   ├── 0001_initial.pyc
│   │   ├── __init__.py
│   │   └── __init__.pyc
│   ├── models.py
│   ├── models.pyc
│   ├── templates
│   │   └── lessons
│   │       ├── lesson_detail.html
│   │       └── lesson_list.html
│   ├── tests.py
│   ├── urls.py
│   ├── urls.pyc
│   ├── views.py
│   └── views.pyc
├── logs
│   ├── nginx_access.log
│   └── nginx_error.log
├── manage.py
├── media
│   └── Raido
│       └── 2013
│           └── 08
├── news
│   ├── __init__.py
│   ├── __init__.pyc
│   ├── models.py
│   ├── models.pyc
│   ├── tests.py
│   └── views.py
├── project
│   ├── __init__.py
│   ├── __init__.pyc
│   ├── settings_deploy.py
│   ├── settings.py
│   ├── settings.pyc
│   ├── static
│   │   ├── css
│   │   │   ├── foundation.css
│   │   │   ├── foundation.min.css
│   │   │   └── normalize.css
│   │   ├── humans.txt
│   │   ├── img
│   │   ├── index.html
│   │   ├── js
│   │   │   ├── foundation
│   │   │   ├── foundation.min.js
│   │   │   ├── jquery.js
│   │   │   └── vendor
│   │   └── robots.txt
│   ├── templates
│   │   ├── 404.html
│   │   ├── 500.html
│   │   └── base.html
│   ├── urls.py
│   ├── urls.pyc
│   ├── wsgi.py
│   └── wsgi.pyc
├── pids
├── README.md
└── stati

【问题讨论】:

    标签: django media


    【解决方案1】:
    urlpatterns = patterns('',
                       # Uncomment the admin/doc line below to enable admin documentation:
                       # url(r'^admin/doc/',
                       # include('django.contrib.admindocs.urls')),
    
                       ....
    
    
                       ) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)urlpatterns += staticfiles_urlpatterns()
    

    这就是我服务媒体的方式

    【讨论】:

    • 谢谢,这调整了我的网址。并且这段代码必须是有意的......但它没有解决媒体服务
    • 您的 TEMPLATE_CONTEXT_PROCESSORS 中还需要“django.core.context_processors.media”
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-18
    • 2012-02-28
    • 2010-11-04
    • 2016-12-05
    • 1970-01-01
    • 2014-12-14
    • 1970-01-01
    相关资源
    最近更新 更多