Tôi có thể tải lên hình ảnh qua trang quản trị, nhưng không thể tìm thấy hình ảnh khi tôi điều hướng đến url được tạo bởi django. (404 lỗi) Các tập tin đang được tải lên thư mục:Làm cách nào để phân phát các tệp phương tiện trong môi trường Django cục bộ?
project_root/media/eventbanner/1/
Tôi đã thử nhiều giải pháp nhưng không ai có vẻ làm việc cho hoàn cảnh của tôi. Django 1.10 đang được chạy cục bộ trên Ubuntu 16.04.
Url tôi nhận được là: thư mục gốc
http://localhost:8000/media/eventbanner/1/banner_image.jpg
Truyền thông tọa lạc tại địa chỉ:
/home/username/xxx/xxx/project_name/media
mã trong tệp HTML: Mã
<div class="banner-image">
<img src="{{ event.eventbanner.banner_image.url }}"/>
</div>
url.py:
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)
Thêm điều đó vào ROOT.py ROOT.py. Cảm ơn bạn. – MarkerDave