0

だから私はこの問題をこの1時間グーグルしていて、解決策を思い付くことができません。基本的にこれはそれです:私のmodel.pyにはこれを持つクラスがあります

class Case(models.Model):
zoomOutImage = models.ImageField('Label', upload_to="zoomOutImage")

そして私のsettings.pyで私は私のメディアURL/ROOTをこのように設定しています

MEDIA_ROOT = os.path.join(os.path.abspath(''),'app/static/ds/')
MEDIA_URL = '/static/ds/'

Webサーバーから次のように機能する必要があります。

http://127.0.0.1:8000/static/ds/zoomOutImage/actinic_granuloma_3.jpg

PIL(virtualENV内)をインストールしましたが、アップロードにエラーはありません。唯一の問題は、管理パネルからファイルをアップロードしようとしても何も起こらないことです。エラーなし。ファイルは、開発サーバーによってzoomOutImageフォルダーにアップロードされないだけです。誰かが私に理由を教えてもらえますか?

4

3 に答える 3

2

あなたのファイルはあなたのルートのサブディレクトリ、'zoomOutImage'という名前のサブディレクトリにあると思います。または、ルートでそのように呼び出されたファイルですら。文字列へのアップロードに関数呼び出しを入れたことを覚えています。この関数は、os.joinとインスタンスのファイル名を使用して、パスとファイル名を作成します。これを頭で行うと、現在利用可能なサンプルコードはありません。しかし、これをグーグルできる必要があります。

こちらをご覧くださいhttps://stackoverflow.com/questions/1190697/django-filefield-with-upload-to-determined-at-runtime

ちなみに、私はあなたの答えに完全に同意しません。設定で絶対パスを使用しないでください。正しい設定を使用する方法については、この回答を参照してください。django1.4開発でcssを使用し、プロジェクトパスを参照してください。

編集(あなた自身の答えを読んだ後)

この最初のステップが欠けていると思います:

これは、settings.pyファイルへのパスです。

SETTINGS_DIR = os.path.dirname(os.path.realpath(__file__))

これがプロジェクトディレクトリへのパスです:(私はビルドアウトを使用しているので、ビルドアウトと呼びますが、これはプロジェクトのルートです):

BUILDOUT_DIR = os.path.abspath(os.path.join(SETTINGS_DIR, '..'))

そこから、必要なものすべてを定義できます。

STATIC_ROOT = os.path.join(BUILDOUT_DIR, 'var', 'static')
STATIC_URL = '/static_media/'
MEDIA_ROOT = os.path.join(BUILDOUT_DIR, 'var', 'media')
MEDIA_URL = '/media/'

テンプレートファイルで、次のような画像を参照してください。

<a href="{{MEDIA_URL}}{{ case.zoomOutImage }}"><img src="{{MEDIA_URL}}{{ case.zoomOutImage }}" width="100%"></a>

テンプレートに与えられたオブジェクトがcaseと呼ばれるとき

URLの質問について。これを追加する必要があります:

if settings.DEBUG:
    urlpatterns += patterns('',
        (r'', include('staticfiles.urls')),
    )

cssの使用に関する質問への上記のリンクを参照してください。これは同じ問題ですが、開発中にcssファイルを見つけるためのものです。静的ファイルの場所がすべてです。

于 2012-12-25T23:56:18.550 に答える
0
import os
# get abspath
def rel(*x):
   return os.path.join(os.path.abspath(os.path.dirname(__file__)), *x)
MEDIA_ROOT = rel('media')
MEDIA_URL = '/media/'
STATIC_URL = '/static/'
STATIC_ROOT = '' #if only your static files are in project folder
STATICFILES_DIRS = ( rel('static'),) #if only your static files are in project folder

この設定を使用すると、すべてが機能します

于 2012-12-26T14:54:11.967 に答える
-2

だから私は最終的に私の問題を解決しました。将来この問題が発生する場合は、次の手順を実行してください。

静的メディア ファイルを開発サーバーでローカルに提供しようとしている場合は、MEDIA_ROOT と MEDIA_URL に絶対パスを使用します。

于 2012-12-26T05:52:09.793 に答える