7

これは私のmodels.pyです:

def get_profileImage_file_path(instance, filename):
    return os.path.join('%s/uploadedPhotos/profileImages' % instance.user_id, filename)

class UserExtended(models.Model):
    user = models.OneToOneField(User)
    profileImage = models.ImageField(upload_to=get_profileImage_file_path, default='/static/images/myProfileIcon.png')

ここで、デフォルトの画像 (静的フォルダーにある) を、

get_profileImage_file_path

関数。私の settings.py では、media_root と media_URL を次のように定義しました。

MEDIA_ROOT = '/home/username/Documents/aSa/userPhotos'

MEDIA_URL = '/media/'

何らかの理由で、テンプレートとテンプレートでユーザー オブジェクトを渡すと、次のようになります。

<img class='profilePic' src="{{ user.userextended.profileImage.url }}" height='120px' alt="" /> 

画像が表示されず、クロムで「要素の検査」セクションを開くと、次のような 404 エラーが表示されます。

GET http://127.0.0.1:8000/home/username/Documents/djcode/aS/aSa/static/images/myProfileIcon.png 404 (NOT FOUND)  

それが画像への正しいファイルパスであっても。(ファイルパス全体を提供している理由もわかりません。/ static /から開始するだけではないでしょうか?「ソースを表示」しても、URL全体がそこにあります。)そのようにするにはどうすればよいですか静的フォルダーにあるデフォルトの画像は、

get_profileImage_file_path

関数?

4

1 に答える 1

1

一般に、メディアには次のように構成を使用します。

BASE_DIR = dirname(dirname(abspath(__file__)))

MEDIA_ROOT_DIR = 'media'
MEDIA_ROOT = normpath(join(BASE_DIR, MEDIA_ROOT_DIR))
MEDIA_URL = '/media/'

開発目的の場合、次のように設定します。

DEBUG = True

そして urls.py に以下を追加します:

from django.conf import settings
from django.conf.urls.static import static

if settings.DEBUG:
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
    urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

画像を再度アップロードし、画像を検証します。これで機能するはずです。

于 2015-02-09T11:47:51.383 に答える