0

ウェブサイトに画像を表示したい。私はDjangoのドキュメントとstackoverflowに関する他の投稿を調べてきましたが、これが機能するようにはなりませんでした。
画像名は「under-construction.jpg」です。それは/home/di/mysite/myapp/static/imagesディレクトリにあります。

私はこのようなテンプレートを持っています:

<img src="{{ STATIC_URL }}images/under_construction.jpg" alt="Hi!" />

私のviews.pyで私はこれを持っています:

def under_construction(request):
    return render(request, 'under_construction.html')

私のsettings.pyには、次のものがあります。

STATIC_ROOT = ''

# URL prefix for static files.
# Example: "http://media.lawrence.com/static/"
STATIC_URL = '/static/'

# Additional locations of static files
STATICFILES_DIRS = (
    # Put strings here, like "/home/html/static" or "C:/www/django/static".
    # Always use forward slashes, even on Windows.
    # Don't forget to use absolute paths, not relative paths.
    '/home/di/mysite/myapp/static',
    '/home/di/mysite/myapp/static/images',
)

実行./manage.py collectstaticして、とにたくさんのファイルを入れまし/home/di/mysite/admin/home/di/mysite/images。画像を表示するにはどうすればよいですか?

4

5 に答える 5

2

あなたがする必要があるのは、settings.pyを次の4つのポイントになるように編集し、同じフォルダに新しいフォルダ(静的)を作成することですsettings.pyは静的フォルダにあり、その中に別のフォルダ(画像)を作成できます(under_constructioon.jpg)を置きます

  1. STATICFILES_DIRS = (os.path.join( os.path.dirname( __file__ ), 'static' ),)

  2. STATICFILES_FINDERS = ( 'django.contrib.staticfiles.finders.FileSystemFinder', 'django.contrib.staticfiles.finders.AppDirectoriesFinder',)

  3. STATIC_URL = '/static/'

  4. STATIC_ROOT = ''

    前の作業が終了した後。あなたが書くことができるポイント
    <img src="{{ STATIC_URL }}images/under_construction.jpg" alt="Hi!" />

于 2012-06-13T01:39:02.780 に答える
2

静止画像の表示で同じ問題が発生しました。この点で多くの苦しみと多くの時間を費やしました。だから私の設定を共有しようと思った。

settings.py

STATIC_ROOT = ''  
STATIC_URL = '/static/'      
ADMIN_MEDIA_PREFIX = '/static/admin/'          

import os.path  

STATICFILES_DIRS = (      
    "D:/temp/workspace/offeronline/media",
    (os.path.join( os.path.dirname( __file__ ), 'static' )),  
)

STATICFILES_FINDERS = (
    'django.contrib.staticfiles.finders.FileSystemFinder',
    'django.contrib.staticfiles.finders.AppDirectoriesFinder',  
)

urls.py

from django.contrib.staticfiles.urls import staticfiles_urlpatterns
    # ... the rest of your URLconf here ...  and at the end of the file add the following line
urlpatterns += staticfiles_urlpatterns()  

最後に次のコードをテンプレートタグに追加すると、機能しました

<img src="{{ STATIC_URL }}images/i1.png" />
于 2013-06-12T12:16:01.713 に答える
0

私はこのようにその問題を解決しました。

STATIC_ROOT = '/path/to/project/static/'
STATIC_URL = '/static/'
STATICFILES_DIRS = (
)

これを行っても、Djangoはファイルを直接取得しません。アプリケーションごとにこの静的ディレクトリをリンクする必要があります。次のコマンドでdjangoappdirrunに移動するだけです。

cd /path/to/project/my_proj/my_app
ln -s /path/to/project/static/

これは、debugmodでのみ機能します。settings.pyファイルでDEBUG=trueを設定する必要があります。これはdjangoの開発サーバーで動作するはずです。

Djangoは本番modで静的ファイルを提供しません。本番modのWebサーバーで静的ファイルを提供する必要があります。

詳細については、こちらをご覧ください

于 2012-06-12T04:10:16.027 に答える
0

Djangoは開発中に静的ファイルをサポートします。ビューでdjango.views.static.serve()メソッドを使用してメディアファイルを提供できます。

ただし、この方法を使用することは、本番環境では非効率的で安全ではありません。

Apacheの本番環境用

https://docs.djangoproject.com/en/1.2/howto/deployment/modpython/#serving-media-files

于 2012-06-12T04:11:29.447 に答える
0

セットするSTATIC_ROOT = /path/to/copy/files/to

追加しましたか

urlpatterns += patterns('django.contrib.staticfiles.views', url(r'^static/(?P<path>.*)$', 'serve'),

またはあなたもこれを行うことができます

from django.contrib.staticfiles.urls import staticfiles_urlpatterns

# ... the rest of your URLconf here ...

urlpatterns += staticfiles_urlpatterns()

そしてもちろん、djangoを介して静的ファイルをサーバー化しないようにしてください。代わりに、httpサーバーがあると仮定して、静的ファイルを提供するようにhttpサーバーを構成します(nginxは非常に優れています)。

于 2012-06-12T04:50:17.340 に答える