2017-03-18 99 views
0

我已經通過Django文檔多次和多個stackoverflow的問題,但我無法讓媒體服務工作。沒有錯誤,只是在獲取文件時出錯。Django:服務媒體文件的麻煩

任何幫助或額外的來源,以幫助我瞭解如何提供媒體文件。

Settings.py

STATIC_URL = '/static/' 
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles') 

MEDIA_ROOT=BASE_DIR + os.path.join(BASE_DIR, 'store/media/') 
MEDIA_URL='media/' 

我有一個常用的文件夾結構:

/store { static, media, migrations,templates, etc } 
/venv 
/staticfiles 
manage.py 
Procfiles 
README 
requirements.txt 
runtime.txt 

我requirements.txt

appdirs==1.4.3 
Django==1.10.5 
gunicorn==19.6.0 
olefile==0.44 
packaging==16.8 
Pillow==4.0.0 
psycopg2==2.7 
pyparsing==2.2.0 
six==1.10.0 
virtualenv==15.1.0 
whitenoise==3.3.0 

模型像場: 類產品(型號。型號):

product_category = models.CharField(max_length=20) 
product_id = models.AutoField(primary_key=True) 
product_name = models.CharField(max_length=50) 
product_description = models.CharField(max_length=100) 
small_price = models.IntegerField() 
medium_price = models.IntegerField() 
large_price = models.IntegerField() 
rating = models.FloatField() 
image = models.ImageField(default='static/imgs/products/Cleanser.png') 

模板代碼調用媒體:

{% for product in all_products %} 

    <div class="item col-xl-4 col-lg-4" style="max-width: 400px;border-color:black;" > 
     <div class="thumbnail" style="box-shadow: 1px 1px 10px grey;"> 

        {% load staticfiles %} 
        <img class="group list-group-image" style="height:200px;width:120px;" src="{{ product.image }}"> 



      <div class="caption" style="text-align:Center;"> 

       <p class="group inner list-group-item-heading" style="font-family:Raleway;font-size:23px;color:black;"> 
        <strong>{{ product.product_name}}</strong></p> 

       <p class="group inner list-group-item-text" style="font-family:Roboto,sans-serif;font-style:italic;color:#222;opacity: 0.5"> 
        {{ product.product_description }}</p> 

       <div class="row"> 
        <div class="col-xs-12 "> 


          <div class="form-group" > 


           <label for="size">Sizes</label> 
           <select class="form-control" class="size" style="max-width: 50%;margin:auto;"> 

            {% if product.product_category == "Milkshakes" %} 
            <option value="{{product.medium_price}}" > Medium</option> 

            {% else %} 

            <option value="{{product.small_price}}" > Small (285ml)</option> 
            <option value="{{product.medium_price}}" >Medium (350ml) </option> 
            <option value="{{product.large_price}}">Large (500ml)</option> 
            {%endif%} 

           </select> 



           <input type="hidden" value="{{product.product_id}}" class='hidden'> 




            <p style="margin-top:15px;"> <strong>Quantity &nbsp; </strong> </p> 
            <button type="button" class="btn btn-default btn-circle less" >-</button> 
            <input type="button" class="btn btn-default btn-circle quantity" value=1></input> 
            <button type="button" class="btn btn-default btn-circle more" >+</button> 
            <p> </p> 
           {% if discount != 0 %} 
           <p style="font-family: Raleway;color:black;font-size: 20px"> Discount &nbsp; <span style="color:rebeccapurple;opacity: 0.5">{{ discount }}%</span></p> 
           {% endif %} 
           <p class="sizer" style="color:black" >MUR &nbsp;</p> <p class="price" style="color:rebeccapurple;opacity: 0.8">{{ product.small_price }}</p> 

           <p> </p> 

<button type="input" class="btn btn-success buy" style="border- 
color:#8A2BE2;background-color: #8A2BE2;margin-top:-20px;font- 
size:17px;font-family: Raleway"> Add <i class="fa fa-shopping-cart" 
aria-hidden="true"></i></button> 

            </div> 



        </div> 


       </div> 
      </div> 
     </div> 
    </div> 



    {% endfor%} 

編輯:

URLs.py除了媒體seriving:

from django.contrib.staticfiles.urls import static,staticfiles_urlpatterns 

    urlpatterns += staticfiles_urlpatterns()  urlpatterns += staticfiles_urlpatterns() 
-urlpatterns += static(MEDIA_URL, document_root=MEDIA_ROOT)   +urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) 
+0

在'MEDIA_ROOT = BASE_DIR + os.path.join(BASE_DIR,'store/media /')'後放置'print(MEDIA_ROOT)'。你得到了什麼? –

+0

[Django靜態媒體未顯示圖片]可能重複(http://stackoverflow.com/questions/41660546/django-static-media-not-showing-picture) – e4c5

+0

@nik_m它實際上打印空白(heroku部署) – YourfavOreo

回答

0

我也不得不修改我的主urls.py服務媒體文件:

urlpatterns = [ 

    url(r'^homepage/', include('homepage.urls')), 
    url(r'^login/', views.login, {'template_name': 'login.html'}, name='login'), 
    url(r'^register/', include('register.urls')), 
    url(r'^admin/', admin.site.urls), 

] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) # For serving media files on development server 
+0

編輯我的問題 – YourfavOreo