ローカルマシンでDjango(1.5.1)を使用してギャラリーを構築しています。アルバムモデルにはImageField
があります。アルバムのすべての画像を表示するビューがあります。うまく機能しますが、最後には画像が表示されません。ご覧のように画像の境界線がありますが、画像は読み込まれません。
_class Category(models.Model):
###
class Album(models.Model):
category = models.ForeignKey(Category, related_name='albums')
###
class Image(models.Model):
album = models.ForeignKey(Album)
image = models.ImageField(upload_to = 'images/albums/')
_
_def detail(request, album_id):
album = get_object_or_404(Album, pk=album_id)
return render(request, 'gallery/detail.html', {'album': album})
_
_<h1>{{ album.title }}</h1>
{% for image in album.image_set.all %}
<a> <img src="{{ image.image.url }}" height="420"></a>
{% endfor %}
_
これが私のアルバムアドレスの場合:_http://localhost:8000/gallery/1/
_
画像のURLは次のとおりです:http://localhost:8000/media/images/albums/photo_4.JPG (I get 404 when enter it in browser)
このメディアルートとURL:
_MEDIA_ROOT = '/media/'
MEDIA_URL = '/localhost:8000/media/'
_
私のメディアルートには777許可があります。
私は今どうすればいい?問題はどこにありますか?
何が問題なのか手がかりがあります。 MEDIA_URL
は次のようになります。
MEDIA_ROOT='<the full path to your media folder>' (i.e: '/home/ike/project/media/')
MEDIA_URL='/media/'
先頭のスラッシュ文字に注意してください。これは、メディアがルートサーバーフォルダー内のフォルダーであり、それを呼び出す他のURLとは関係がないためです。
そして、これらの行をurls.py
ファイルの最後に追加します:
# You might need to import static function like this:
#from Django.contrib.staticfiles.urls import static
urlpatterns += staticfiles_urlpatterns()
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
次のドキュメントを確認できます。 https://docs.djangoproject.com/en/dev/howto/static-files
お役に立てれば
Devサーバーを使用している場合は、urls.pyに何かを追加してDjangoメディアファイルを提供する必要があります、cf:
1.4.x: https://docs.djangoproject.com/en/1.4/howto/static-files/#serving-other-directories 1.5.x: https:// docs .djangoproject.com/en/dev/howto/static-files /#serving-files-uploaded-by-a-user
ソース: https://docs.djangoproject.com/en/dev/howto/static-files/#serving-files-uploaded-by-a-user
from Django.conf import settings
from Django.conf.urls.static import static
urlpatterns = [
# ... the rest of your URLconf goes here ...
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
アップロードされたファイルを提供するには、URLパターンに追加する必要があります
settings.pyを確認してくださいMEDIA_ROOT
および 'MEDIA_URL'(およびそれらは正しい)。 MEDIA_ROOTは、メディアが保存されるマシン上の絶対フォルダーを指定します。
例として:
MEDIA_ROOT = '/myfolder/'
これは、次の場所で画像を探すことを意味します。
/myfolder/images/albums/
次のsettings.pyでMEDIA_ROOT
場所:つまり.
MEDIA_URL = 'http://localhost/myfolder/'
あなたの画像:
<img src="{{ MEDIA_URL }}{{ image.image.url }}" height="420"></a>
これは次のことに関連します。
http://localhost/myfolder/images/albums/
お役に立てれば。
details.html内で、
img src="{{ image.image.url }}" height="420"
に
img src="your_app/media/{{ image.image.url }}" height="420"
これがお役に立てば幸いです。そうでない場合は、詳細をお知らせいたします。
上記の各回答から少しずつ取り上げました。私はあなたと同じ問題を抱えていました。現在の/blog/post/(media_url)/image.jpgから指示されていた収益を得ていました
管理ポータルで簡単に表示して編集できました。しかし、私のpost.htmlでは、{{MEDIA_URL}}を追加するまで問題がありました-
それが私が行方不明だったすべてです。
他の人がそれを読んで、何が欠けているかを見ることができるように、以下のセクション全体を投稿しました。
post.html:
<label for="id_image"> <img src="{{ MEDIA_URL }}{{ p.image.url }}"
title="{{ p.title }}"> </label>
models.py:
from Django.core.files.storage import FileSystemStorage
upload_location =
FileSystemStorage(location='/home/pi/djcode/xpcpro/xpcpro/images')
class Blog(models.Model):
title = models.CharField(max_length=255)
author = models.ForeignKey(settings.AUTH_USER_MODEL, default=1)
date = models.DateTimeField(auto_now=False, auto_now_add=True)
body = models.TextField()
image = models.ImageField(
storage=upload_location, null=True,
blank=True, width_field="width_field",
height_field="height_field",)
height_field = models.IntegerField(default=0)
width_field = models.IntegerField(default=0)
urls.py:
from Django.conf.urls.static import static
from Django.contrib.staticfiles.urls import staticfiles_urlpatterns
urlpatterns += staticfiles_urlpatterns()
urlpatterns += static(settings.MEDIA_URL,
document_root=settings.MEDIA_ROOT)
settings.py:
MEDIA_ROOT = "/home/pi/djcode/xpcpro/xpcpro/images/"
MEDIA_URL = "/images/"
私はこの質問が古いことを知っていますが、すべてのオプションを証明した直後に解決しました:
MEDIA_URL = '/media/' MEDIA_ROOT = os.path.join(BASE_DIR、' media ')
from Django.conf.urls.static import static from Django.contrib.staticfiles.urls import staticfiles_urlpatterns from Django.conf import settings urlpatterns + = staticfiles_urlpatterns() urlpatterns + = static(settings.MEDIA_URL、document_root = settings.MEDIA_ROOT)
img src = "{{image.image.url}}" alt = "{{image.title}}"
注:MEDIA_URLは不要です。image.image.urlは絶対なので、「/」に注意してください。名前空間を使用する場合は、最後のスラッシュを追加する必要はありません。
img src = "/ namespace_name/{{image.image.url}}"->悪い!!! img src = "/ namescape_name {{image.image.url}}" ->良い!!!