社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Django

[精华] 关于ImageField后台上传图片的问题

bmin • 11 年前 • 7795 次点击  

in models.py

class Input(models.Model):
    inputid = models.CharField(verbose_name='入库单号', max_length=30)
    inputdate = models.DateField(verbose_name='入库日期')
    hetongid = models.CharField(verbose_name='合同编号', max_length=30)
    chandi = models.ForeignKey(Chandi, verbose_name='产地')
    name = models.CharField(verbose_name='商品名称', max_length=100)
    year = models.IntegerField(verbose_name='年份')
    keyid = models.CharField(verbose_name='箱序列号', max_length=20)
    bizhong = models.ForeignKey(Bizhong, verbose_name='币种')
    money = models.FloatField(verbose_name='金额'))
    input_pic = models.ImageField(upload_to='input_pic/')

in settings.py

HERE = os.path.dirname(os.path.abspath(__file__))

MEDIA_ROOT = os.path.join(HERE,'media').replace('\\','/')+'/'

MEDIA_URL = '/media/'

用admin后台上传图片后.. mysql数据库的input_pic值为:

input_pic/85144-340070694_l.jpg

但是在浏览器中访问如下地址不成功:

http://127.0.0.1:8000/media/input_pic/85144-340070694_l.jpg

提示:

Using the URLconf defined in ceshi.urls, Django tried these URL patterns, in this order:
^admin/
The current URL, media/input_pic/85144-340070694_l.jpg, didn't match any of these.

请问是怎么回事儿?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/303
 
7795 次点击  
文章 [ 4 ]  |  最新文章 11 年前
我心荡漾
Reply   •   1 楼
我心荡漾    11 年前

同上

cdxfish
Reply   •   2 楼
cdxfish    11 年前
if settings.DEBUG:
urlpatterns += patterns('',
        url(r'^media/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.MEDIA_ROOT }),
        url(r'^static/(?P<path>.*)$','django.views.static.serve',{'document_root':settings.STATIC_ROOT}),
)

这个只是在你DEBUG的时候才有效,是使用的Django自己内部的静态资源处理机制. 当setting 模板背下来吧,等你release的时候也没有太大用:)

如果你想知道具体为啥看django.views.static.serve这个函数源码

bmin
Reply   •   3 楼
bmin    11 年前

再更新一下..图片(媒体)文件和静态资源文件分开比较好..之前都混在一起了..

in settings.py

HERE = os.path.dirname(os.path.abspath(__file__))

MEDIA_ROOT = os.path.join(HERE,'media').replace('\\','/')+'/'

MEDIA_URL = '/media/'

STATIC_PATH = os.path.join(HERE,'static').replace('\\','/')+'/'

TEMPLATE_DIRS = os.path.join(HERE,'templates').replace('\\','/')+'/'

in urls.py

from django.conf import settings
urlpatterns = patterns('',
    url(r'^media/(?P<path>.*)$', 'django.views.static.serve',{'document_root': settings.MEDIA_ROOT}),
)
bmin
Reply   •   4 楼
bmin    11 年前

自己搜了一下..解决了这个问题..但还不是太理解.. 先把最终代码贴在这..

in settings.py

HERE = os.path.dirname(os.path.abspath(__file__))

MEDIA_ROOT = os.path.join(HERE,'media').replace('\\','/')+'/'

MEDIA_URL = '/media/'

STATIC_PATH = os.path.join(HERE,'media').replace('\\','/')+'/'

in urls.py

from django.conf import settings

url(r'^media/(?P<path>.*)$', 'django.views.static.serve',{'document_root': settings.STATIC_PATH}),