ビデオにサムネイルをたくさん表示するシンプルなDjangoアプリケーションがあります。アプリケーションが最初に行うことは、MEDIA_ROOT
のすべてのサムネイルファイルを見つけることです。他のすべてはそれから下に流れ落ちます。私は正しく私のサイトを提供しているApacheを持っているが、それは私のmedia_rootにファイルを見つけることができません。OS X Django/Apacheアプリケーションがメディアファイルを提供していない、pythonシェルを使用しています
views.py:settings.pyから
def index(request):
def walk_dir_tree(path, file_type):
return[os.path.basename(x) for x in glob.glob(path + file_type,
recursive=True)]
# Gets all .jpgs in media_root
all_thumb_files = sorted(walk_dir_tree(
settings.MEDIA_ROOT + 'thumbnails/**/*', '.jpg'), reverse=True)
...
return HttpResponse(template.render(context, request))
関連情報:
# URLs
STATIC_URL = '/static/'
MEDIA_URL = '/media/'
# Root Dirs:
STATIC_ROOT = os.path.join(BASE_DIR, "static/")
# Dev
MEDIA_ROOT = '/Users/user/Documents/temp/secureDash/'
のhttp-vhosts.conf:そのパスを確保するための試験として
<VirtualHost *:80>
LogLevel debug
ServerName securedash
ServerAdmin <email>
Alias /static /Users/user/icloud/projects/secureDash/static
<Directory /Users/user/icloud/projects/secureDash/static>
Require all granted
</Directory>
Alias /media /Users/user/Documents/temp/secureDash
<Directory /Users/user/Documents/temp/secureDash>
Require all granted
</Directory>
<Directory /Users/user/icloud/projects/secureDash/secureDash>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
WSGIDaemonProcess securedash python-path=/Users/user/icloud/projects/secureDash/secureDash python-home=/Users/user/Documents/VirtualEnvs/securedash
WSGIProcessGroup securedash
WSGIScriptAlias//Users/user/icloud/projects/secureDash/secureDash/wsgi.py
</VirtualHost>
私のメディアには正しいですが、私は簡単なスクリプトを書いてpython3シェルで実行しました:
MEDIA_ROOT = '/Users/user/Documents/temp/secureDash/'
def walk_dir_tree(path, file_type):
return[os.path.basename(x) for x in glob.glob(path + file_type,
recursive=True)]
all_thumb_files = sorted(walk_dir_tree(
MEDIA_ROOT + 'thumbnails/**/*', '.jpg'), reverse=True)
# prints a list of all jpgs
print(walk_dir_tree('/Users/user/Documents/temp/secureDash/thumbnails/**/*', '.jpg'))
# also prints a list of all jpgs
print(all_thumb_files)
どこにもエラーが記録されていません。たびに空のリストを返します。私はこれがsettings.pyやApacheの設定で問題になる可能性が高いと考えていますが、私は数多くの組み合わせを試してきましたが、何も動いていません。
私のラズベリーパイの私の "プロダクション"サーバーでこの正確な構成が動作しています。私はちょうどより生産に近いものを開発環境を設定しようとしています。違いはOSとMEDIA_ROOT
の場所だけです。
Django 1.10 | OSX 10.11エルキャピタン| Apache 2.4
あなたのコードで古い 'print()'デバッグを試してみましたか? 'index()'のコンソールでいくつかのランタイム値を出力するように見えます。ビューコードは診断に十分なヒントを提供します –
ええ、私はそれが適切であると考えることができるどこでも行っています。 'print(all_thumb_files)'は '[]'を返します。 'print( 'settings.MEDIA_ROOT is:' + settings.MEDIA_ROOT)'はwalk_dir_treeの中の '/ Users/user/Documents/temp/secureDash /'を返します: 'print( 'path + file_type:' + path + file_type)' '/ Users/user/Documents/temp/secureDash/thumbnails/**/*。jpg'を返します。 – brewcrazy
Pythonのバージョンは何ですか? "バージョン3.5で変更されました:" ** "を使って再帰的globsをサポートしました。 – mithuntnt