2017-03-31 9 views
0

ビデオにサムネイルをたくさん表示するシンプルな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

+0

あなたのコードで古い 'print()'デバッグを試してみましたか? 'index()'のコンソールでいくつかのランタイム値を出力するように見えます。ビューコードは診断に十分なヒントを提供します –

+0

ええ、私はそれが適切であると考えることができるどこでも行っています。 '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

+0

Pythonのバージョンは何ですか? "バージョン3.5で変更されました:" ** "を使って再帰的globsをサポートしました。 – mithuntnt

答えて

0

これは/Users/user/Documents/temp/secureDash/の許可の問題に終わりましたが、これを実行するのに役立つものは、@mithuntntが別のフォルダをglobするための提案でした。だから私は戻って、結果を返す/Users/user/Documentsをglobbedしました。その後、結果を返す/tempを追加します。それではなかった/secureDash。私は/secureDashと同じレベルにあった、それが働いた/tempの別のディレクトリを試しました。だから私は/secureDashのパーミッションをチェックし、それは:

17276808 [email protected] 6 user _www       204B Mar 29 15:04 secureDash 

だから私はchmod -R 755 /Users/user/Documents/temp/secureDash/

を走っそして今サムネイルがロードされています。 Apacheのログにファイルのパーミッションエラーがあってはならないのですか? http-vhosts.confにLogLevel debugがありました。開発環境に適したLogLevel設定は何ですか?

関連する問題