سؤال

لدي اقامة جانغو تطبيق يستخدم الصور.أعتقد أنني يجب تعيين إعدادات الوسائط MEDIA_ROOT و MEDIA_URL بشكل صحيح.لكن الصور لا تظهر.هل تعرف ماذا يمكن أن تكون المشكلة ؟

دعونا النظر في هذا المثال:

ملفات الصور تحت /home/www/وسائل الإعلام/التطبيق/صور ونحن نحاول طلب http://example.com/photos/123.jpg

يجب استخدام هذه الإعدادات ؟

MEDIA\_ROOT = /home/www/media

MEDIA_URL = http://example.com/app

تحديث: نسيت أن أذكر أن أنا باستخدام المدمج في تنمية الخادم.

هل كانت مفيدة؟

المحلول

وخدمة محتوى ثابت من جانغو هو على بالإحباط من المطور نفسه (إذا لم أكن مخطئا، وأنها تعمل فقط عندما تكون في وضع التصحيح). يجب عليك استخدام خادم الويب مخصصة، بدلا من ذلك.

إذا كنت حقا بحاجة للقيام بذلك، على أي حال، وقراءة وثائق حول كيف لخدمة الملفات الثابتة .

نصائح أخرى

من أجل التنمية فقط

يمكنك إعداد ثابتة وسائل الاعلام الخادم للاستخدام مع خادم التطوير من خلال القيام بذلك في urls.py الملف.وقد أرفقت الكود تظهر كيف استخدامه (جنبا إلى جنب مع القسري التصحيح الشرطية.)

from django.conf import settings
from django.conf.urls.defaults import *      

# Uncomment the next two lines to enable the admin:
from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('', 
    (r'^$', 'views.index'),            

    # Accounts
    (r'^accounts/login/$', 'views.user_login'),
    (r'^accounts/logout/$', 'views.user_logout'),

    # Contrib Modules
    (r'^admin/(.*)', admin.site.root),
)

if settings.DEBUG :
    urlpatterns += patterns('',
        (r'^media/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.MEDIA_ROOT, 'show_indexes': True}),
    )

أضع MEDIA_ROOT في دليل فرعي من html/وسائل الإعلام والارتباط به على هذا النحو في settings.py

MEDIA_ROOT = os.path.join(os.path.dirname(__file__), 'html/media/').replace('\\','/')

بعد تطوير الانتهاء من المشروع يحصل على نشرها إلى ملقم ويب حيث ثابتة ملفات الوسائط ثم تقدم أباتشي باستخدام التوجيهات.

وهذه هي الطريقة الصحيحة لإظهار ملفات الصور مع ImageField. تخيل لدينا صورة الملف الشخصي للمستخدم:

وmodels.py:

UserProfile:
    profilePic= models.ImageField( upload_to='PATH_TO_UPLOAD', blank=True, null=True)

وsettings.py:

MEDIA_ROOT = 'FULL_PATH_OF_MEDIA'
MEDIA_URL = 'URL_OF_MEDIA'

وurls.py:

urlpatterns = [
.
.
.
]+ static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

وPATH_TO_UPLOAD هو الطريق الذي يذهب تحميل بيانات المستخدم. وهذا هو الدليل الفرعي من FULL_PATH_OF_MEDIA، مما يعني أن الملف الذي تم تحميله يكون

FULL_PATH_OF_MEDIA/PATH_TO_UPLOAD 

وpath.Now كامل يمكن الوصول إليها هذا المحتوى في هذا الرابط:

SITE_NAME/URL_OF_MEDIA/PATH_TO_UPLOAD

وأوصي أيضا تقرأ هذا على static_files مقابل media_files

ثيقة

أنا على علم أن الأصل في السؤال هو مع ديف الخادم ، ولكن عن أي شخص آخر يبحث عن بيئة إنتاج الجواب:

https://docs.djangoproject.com/en/1.8/howto/static-files/deployment/ يوفر دليل على كيفية الحصول جانغو تخدم الملفات في بيئة إنتاج.من لهجة الدليل ، فإنه لا يبدو أن يعني ذلك فمن الأفضل أن يكون خادم الويب منفصل للتعامل مع الملفات أو استخدام mod_wsgi مع اباتشي

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top