Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django中未显示媒体文件_Python_Django - Fatal编程技术网

Python Django中未显示媒体文件

Python Django中未显示媒体文件,python,django,Python,Django,我试图在网页上显示用户上传的图像。当我使用Django管理界面上传图像文件时(我为画廊图像制作了一个带有文件字段的模型),图像正确地存储在/media/images中。我在settings.py中设置了媒体设置,如下所示: MEDIA_URL = "/media/" MEDIA_ROOT = os.path.join(BASE_DIR, "media") 项目URL.py: from django.conf.urls import include, url from django.contri

我试图在网页上显示用户上传的图像。当我使用Django管理界面上传图像文件时(我为画廊图像制作了一个带有文件字段的模型),图像正确地存储在/media/images中。我在settings.py中设置了媒体设置,如下所示:

MEDIA_URL = "/media/"
MEDIA_ROOT = os.path.join(BASE_DIR, "media")
项目URL.py:

from django.conf.urls import include, url
from django.contrib import admin
import gallery.views
from django.conf import settings
from django.conf.urls.static import static

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^', include('gallery.urls')),
]+ static(settings.MEDIA_URL, document_root = settings.MEDIA_ROOT)
Gallery URL.py:

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

urlpatterns = [
url(r'^', views.homepage, name = 'home'),
]+ static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
Gallery views.py:

def homepage(request):
    texts = Sitetext.objects.all()
    gal = Galleryimg.objects.all()
    gal.order_by('position')


return render(request,'index.html', {"text1":texts[0].text,"text2":texts[1].text,"text3":texts[2].text,"text4":texts[3].text,"title1":texts[0].title,"title2":texts[1].title,"title3":texts[2].title,"title4":texts[3].title,"gallery":gal})
然后这是访问图像的模板代码部分:

{% for g in gallery %}
    <div class="col-md-3 col-sm-4 col-xs-6">
        <img class="img-responsive" src="g.imgfile.url" />
    </div>
{% endfor %}
{%g在gallery%}
{%endfor%}
创建库图像时,会弹出一个损坏的图像,但该图像无法正确访问

  • 从您的
    gallery.URL
    文件中删除
    静态(settings.MEDIA\u URL,document\u root=settings.MEDIA\u root)
    部分

  • src=“g.imgfile.url”
    替换为
    src=“{{g.imgfile.url}”


  • 旁白:为什么要将这本大词典(
    {“text1”:text[0]。text,
    )传递给模板?这是一种容易出错的错误做法。您应该传递
    'text':text
    ,然后在模板内使用
    {%for text in text%}对它们进行迭代因此,
    render
    方法应该类似于
    render(请求,'index.html',{'text':text,'gallery':gal})
    我这样做,并且我能够从Django开发服务器提供媒体文件:

    urlpatterns += [
        url(r'^media/(?P<path>.*)$', django.views.static.serve, {
        'document_root': settings.MEDIA_ROOT}),]
    
    urlpatterns+=[
    url(r'^media/(?P.*)$),django.views.static.service{
    “document\u root”:settings.MEDIA\u root}),]
    
    仅在项目url.py中包含这些内容就足够了


    您的问题可能是URL.py中的媒体URL条目不正确。您似乎与媒体文件的实际URL不匹配,这可能类似于
    /media/something.png
    。您似乎只是在
    /media/
    上进行了限定。我还认为您的正则表达式应该是
    ^media/
    ,而不是
    /media>/

    我同时执行了1.和2.并且文件仍然没有显示。我相信url是正确的,因为:In[3]:from gallery.models导入gallerymg In[4]:gallerymg.objects.all()Out[4]:In[5]:gallerymg.objects.all()[0]Out[5]:In[6]:gallerymg.objects.all()[0]。imgfile Out[6]:In[7]:Galleryimg.objects.all()[0].imgfile.url Out[7]:“/media/images/20150223_083553.jpg”所以,如果你点击url
    127.0.0.1:8000/media/images/20150223_083553.jpg
    ,你会得到一个404,对吗?如果是这样,试试这个:在你的
    url.py
    文件中,把这个放在顶部
    从django.views.static import服务中删除
    (settings.MEDIA\u URL…
    和add
    urlpatterns+=[URL(r'^MEDIA/(?P.*),serve,{'document\u root:settings.MEDIA\u root})]
    。不,图像加载得很好。啊!我更改了URL文件,现在显示出来了!感谢您的帮助。请提供更多信息,以便帮助他人。也许可以更新我的答案以反映这些更改。