0

このフィールドのモデルがあります:

image=models.ImageField(upload_to='company-category')

company-categoryはフォルダ内のuploadsフォルダですが、画像をテンプレートディレクトリにアップロードしたいと思います。この方法では、私のWebサイトにアクセスするユーザーは、画像にアクセスしてダウンロードすることができないと思います。

設定で:

TEMPLATE_DIRS = (
    "C:/ghoghnous/HubHub/Theme"
)

これどうやってするの?

4

3 に答える 3

1

ここで私は2つの解決策を与えています。あなたが尋ねたもの、そして私の提案。

次のコードを使用して、テンプレートフォルダへのアップロード場所を設定します。

from django.conf import settings

image=models.ImageField(upload_to = settings.TEMPLATE_DIRS[0])

上記のコードは、画像をテンプレートディレクトリにアップロードします。

私のおすすめ:

メディアフォルダに画像をアップロードします。次に、を使用しMEDIA_URLて、ユーザーがそれらをダウンロードできるようにします。次のコードを使用してそれらを定義します。

settings.py

MEDIA_ROOT = 'C:/ghoghnous/HubHub/media'
MEDIA_URL  = 'site_media'

urls.py

from django.conf import settings
urlpatterns += patterns('',
    url(r'^site_media/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.MEDIA_ROOT, 'show_indexes': True}),
)

models.py

class SampleModel(models.Model):
    image = models.ImageField(upload_to = 'images')

これを使用すると、画像がフォルダにアップロードされますC:/ghoghnous/HubHub/media/images/。次に、objects.getまたはを使用して必要な画像を取得しますobjects.filter

record = SampleModel.objects.get(id = 1)

Iの場合print record.image、出力はになりますimages/filename.jpg。これをテンプレートに渡します。次に、次のように画像を表示するか、ダウンロードリンクを提供します。

<a href="{{ record.image.url }}/" >Download</a>        #Download link
<img src="{{ record.image.url }}/" />                  #To display image
<a href="/site_media/images/file.jpg" >Download</a>    #Download static files

テンプレートフォルダに画像を保存することはお勧めできませんので、2番目の方法を使用することをお勧めします。

于 2012-09-12T12:20:06.590 に答える
0

テンプレートディレクトリは、Djangoのグッドプラクティスに従ってメディアを保存するための好ましい場所ではありません。

また、Webページに表示する画像にはパスがあり、ダウンロードできます。スクリプトを使用して右クリックなどを停止する人もいますが、私が理解している限り、ソースコードは常に画像パスを提供します。

于 2012-09-12T12:05:02.853 に答える
0

ああ、ファイルを一時フォルダにアップロードしてから、それを使って何かをしたいと思います。右?

clean_imageのメソッドをオーバーライドする必要がありますforms次に、ファイルストレージを使用して任意のパスで独自のコードを記述できます

于 2012-09-12T12:38:02.167 に答える