2012-03-13 3 views
1

私はDjangoを数日の間使用しています& tutorialからの基本的なブログをdjangoのコメントで設定しました。Amazon S3バケットのURLをDjango sqlite dbに表示してコメントを表示するにはどうしたらいいですか?

スクリーンショットを生成してAmazon S3にアップロードする全く別のpythonスクリプトがあります。今では、私のdjangoアプリケーションですべての画像をバケットに表示し、画像にコメントシステムを使用したいと思います。私はdbのすべての画像を表示するために現在ハードコードされており、コメントが有効になっているsqlite dbにURLを保存することでこれを行うのが望ましいです。

マイモデル:

(これはDjangoのコメントへの外部キーを必要とするか、Djangoのマジックのほんの一部!?ということでない)

class Image(models.Model): 
imgUrl=models.CharField(max_length=200) 
meta=models.CharField(max_length=300) 
def __unicode__(self): 
    return self.imgUrl 

私のバケットの構造: https://s3-eu-west-1.amazonaws.com/bucket/revision/process/images.png

私が探しているほとんどのチュートリアルとパッケージは、単純なfor keys in bucketタイプのアプローチではなく、アップロード/ダウンロードに基づいています。

私の問題の1つは、Base.htmlを使用している場合、Boto関数をDjangoとどのように統合できるかを理解することです。以前のチュートリアルでは、ビューがあり、そこから関数を呼び出すことができるインデックスページがありました。しかし、ベースはそれを必要としないので、私は少し失われ始めている。 boto APIが変更された場合は

答えて

2

は見上げていませんが、これは私が

from boto.s3.connection import S3Connection 
from boto.s3.key import Key 
import s3config 

conn = S3Connection(s3config.passwd, s3config.secret) 
bucket = conn.get_bucket(s3config.bucket) 
s3_path = '/some/path/in/your/bucket' 
keys = bucket.list(s3_path) 
# or if you want all keys: 
# keys = bucket.get_all_keys() 

for key in keys: 
    print key 
    # here you can download or do other stuff 
    # with the keys like get some metadata 
    print key.name 
    print key.etag 
    print key.size 
    print key.last_modified 

#s3config.py 
passwd = 'BLABALBALABALA' 
secret = 'xvdwv3efefefefefef' 
bucket = 'name-of-your-bucket' 

更新見えた最後の時間働いていた方法です:

アマゾンS3をキー値ストアであり、keyは文字列です。後者の3つをもたらすであろう今

/this/string/key/looks/like/a/unix/path 
/folder/images/fileA.jpg 
/folder/images/fileB.jpg 
/folder/images/folderX/fileX1.jpg 

bucket.list(prefix="/folder/images/"):だから何もあなたのようなキーを入れてから防ぎません。 詳細はこちらをご覧ください:

+0

大変感謝しています。今、私はいくつかの正規表現を見つけ出す必要があると思います。フォルダの中にそのkey.nameを分けて、巨大な画像リストではなくバケツブラウジングのためにいくつかの組織を構築することができます。 –

+0

よく覚えていれば、このスタートストリングを共通に持つすべてのキーがリストされているので、ファイルを "unix path like"の方法で整理したい場合は、bucket.list(s3_path)関数を使用することができます。 – snies

+0

http://readthedocs.org/docs/boto/en/latest/ref/s3.html#boto-s3-bucket "list()"関数のパラメータ(接頭辞など)を確認してください – snies

0

これはS3からのboto、ジャンゴによってMySQLへの結果格納するための私のコードです。

from demo.models import Movies 
import boto 
from boto.s3.key import Key 
import string 
from django.db import connection, transaction 

def movietitle(b): 
    key = b.get_key('netflix/movie_titles.txt') 
    content = key.get_contents_as_string() 
    line = content.split('\n') 
    args = [] 
    for imovie in line: 
     if len(imovie) > 0: 
      imovie = imovie.split(',') 
      movieid = imovie[0] 
      year = imovie[1] 
      title = imovie[2] 
      iargs = [string.atoi(movieid),title,year] 
      args.append(iargs) 
    cursor = connection.cursor() 
    sql = "insert into demo_movies(MovieID,MovieName,ReleaseYear) values(%s,%s,%s)" 
    cursor.executemany(sql,args) 
    transaction.commit_unless_managed() 
    cursor.close() 
関連する問題