मैं व्यवस्थापक पृष्ठ के माध्यम से एक छवि अपलोड कर सकता हूं, लेकिन जब मैं django द्वारा उत्पन्न यूआरएल पर नेविगेट करता हूं तो छवि नहीं मिल सकती है। (404 त्रुटि) फ़ाइलें फ़ोल्डर में अपलोड किया जा रहा है:मैं स्थानीय Django पर्यावरण में मीडिया फ़ाइलों की सेवा कैसे करूं?
project_root/media/eventbanner/1/
मैं कई समाधान की कोशिश की है, लेकिन कोई भी मेरी स्थिति के लिए काम करने के लिए लग रहे हैं। Django 1.10 उबंटू 16.04 पर स्थानीय चलाया जा रहा है।
यूआरएल मैं मिलता है:
<div class="banner-image">
<img src="{{ event.eventbanner.banner_image.url }}"/>
</div>
url.py कोड: HTML फ़ाइल में
/home/username/xxx/xxx/project_name/media
कोड:
http://localhost:8000/media/eventbanner/1/banner_image.jpg
मीडिया रूट फ़ोल्डर में स्थित है
from django.conf.urls import url, include
from django.contrib import admin
from . import views
from django.conf import settings
from django.conf.urls.static import static
app_name = 'events'
urlpatterns = [
url(r'^$', views.index, name='index'),
url(r'^details/(?P<event_id>[0-9]+)/$', views.details, name='details'),
url(r'^details/(?P<event_id>[0-9]+)/addcomment/$', views.add_comment, name='add_comment'),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
settings.py
STATIC_URL = '/static/'
STATICFILES_DIRS =[os.path.join(BASE_DIR, 'static'),]
MEDIA_ROOT = os.path.join(BASE_DIR, 'media/')
MEDIA_URL = '/media/'
models.py
def validate_only_one_instance(obj):
model = obj.__class__
if (model.objects.count() > 0 and obj.id != model.objects.get().id):
raise ValidationError("Can only create 1 %s instance" % model.__name__)
class EventBanner(models.Model):
event = models.OneToOneField(Event, unique=True)
banner_image = models.ImageField(upload_to=get_image_path, blank=True, null=True)
def clean(self):
validate_only_one_instance(self)
इसे रूट में जोड़कर urls.py ने चाल की है। धन्यवाद। – MarkerDave