两位大侠的的参考,
条件就是要把model 中 ImageField 中的图片路径 能在URL中请求显示
name = models.CharField(
u'课程名称'
,
max_length
=
50
)
image = models.ImageField(
u'课程封面'
,
upload_to
=
'course/%Y/%m'
)
1、首先要在settin.py 中设置,这里的文字解说明参考
http://blog.csdn.net/mineyouhe/article/details/21151645
MEDIA_URL
=
'/uploads/'
MEDIA_ROOT = os.path.join(BASE_DIR,
'uploads'
)
2、modle 中的写法如上
3、在url中写url配置。
from
django.conf.urls
import
patterns, url
from
common
import
views
from
django.conf
import
settings
import
django
urlpatterns = patterns(
'common.views'
,
url(
r'^$'
, views.index,
name
=
'index'
),
url(
r'^header/$'
, views.aaa),
url(
r'^uploads/(?P<path>.*)$'
, django.views.static.serve, {
'document_root'
: settings.MEDIA_ROOT,
'show_indexes'
:
True
}),
)
而上面两处参考的有点不同为
django.views.static.serve
有引号
:
1、
(r'^media/(?P<path>.*)$',
'django.views.static.serve'
, {'document_root': settings.MEDIA_ROOT}),
2、urlpatterns=patterns(
''
,
(r
'^site_medias/(?P<path>.*)$'
,
'django.views.static.serve'
,
{
'document_root'
:mysite.settings.STATICFILES_DIRS,
'show_indexes'
: True}),
)
如安下面两种写法访问时则会报错:
ImportError at /uploads/course/2016/12/20160804105046.jpg
No module named 'common.views.django'; 'common.views' is not a package
解决方法,就是把引号去掉,import django 模块, 我的
patterns(
'common.views'
, 是多APP在同一个Django工程下。而这个APP就是叫common。