1

画像に関する他の質問を読みましたが、それでも問題を解決できませんでした:( djangoを初めて使用するので、おそらく基本的なことです。

だから私はモデルの例を持っています:

class Example(models.Model):
    image = models.ImageField(upload_to = "examples/")

テンプレートで表示したいのですが。ビューとして、一般的なdetailViewを使用します。これは、テンプレートの画像に関連する部分です。

<p>Image: <img src="{{ example.image.url }}"/></p>

settings.pyを変更しました:

MEDIA_ROOT = '/home/nicpon/Dokumenty/aplikacje/images/'
MEDIA_URL = '/images/'

この時点で、サイトは画像なしで表示されます(その場所には、画像を表示できなかったときに表示される正方形があります)

今私はurls.pyも変更しました: `

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

しかし、その結果、エラーが発生しました。すべてのページで「'list'オブジェクトに属性'resolve'がありません」。

編集:{{example.image.url}}をimgタグの外側に配置すると、/ images / exapmles / Specific_image.jpgが表示され、コンピューター上のその画像のディレクトリは/ home / nicpon / Dokumenty / aplikacje / images / examples/specific_imageになります。 .jpg

そしてトレースバック:

Environment:


Request Method: GET
Request URL: http://127.0.0.1:8000/images/examples/sepcific_image.jpg

Django Version: 1.4
Python Version: 2.6.5
Installed Applications:
('django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.sites',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'django.contrib.admin',
 'example',
 'registration')
Installed Middleware:
('django.middleware.common.CommonMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware')


Traceback:
File "/usr/local/lib/python2.6/dist-packages/django/core/handlers/base.py" in get_response
  89.                     response = middleware_method(request)
File "/usr/local/lib/python2.6/dist-packages/django/middleware/common.py" in process_request
  67.             if (not urlresolvers.is_valid_path(request.path_info, urlconf) and
File "/usr/local/lib/python2.6/dist-packages/django/core/urlresolvers.py" in is_valid_path
  531.         resolve(path, urlconf)
File "/usr/local/lib/python2.6/dist-packages/django/core/urlresolvers.py" in resolve
  420.     return get_resolver(urlconf).resolve(path)
File "/usr/local/lib/python2.6/dist-packages/django/core/urlresolvers.py" in resolve
  300.                     sub_match = pattern.resolve(new_path)

Exception Type: AttributeError at /images/examples/specific_image.jpg
Exception Value: 'list' object has no attribute 'resolve'
4

1 に答える 1

2

次のようなことを試してみてください。settings.py:

MEDIA_SERVER_URL = 'http://www.example.com/'
MEDIA_URL = os.path.join(MEDIA_SERVER_URL, 'images/')

そしてします

src="{{ MEDIA_URL }}{{ example.image.url }}"

また、権限を確認してください。

  1. メディアディレクトリ(/ home / nicpon / Dokumenty / aplikacje / images /):Webサーバーによる読み取りを許可する必要があります(例:chgrp www-data images)
  2. Webサーバーは、メディアサービスを適切に処理するように構成する必要があります。理想的には別のメディアサーバーを使用できますが、djangoにメディアを提供させる場合は、それぞれのURLを確認する必要があります(urls.pyの場合のように)
于 2012-05-16T19:46:28.420 に答える