ITの隊長のブログ

ITの隊長のブログです。Rubyを使って仕事しています。最近も色々やっているお(^ω^ = ^ω^)

Django勉強中

Django勉強中。

とりあえず途中までをメモ。

MVC

CakePHPなどの他MVCフレームワークを使うとちょっとこんがらがる。

CakePHP

  • Model
  • View
  • Controller

Django

  • Model
  • Template(CakeでいうView)
  • View (CakeでいうController)

Model.objects.get()で、取得できずにExceptionが発生した場合

  try:
    post = Post.objects.get(id=post_id)
  except:
    return redirect('/')

こんな感じでtry ~ exceptをはればいいと思う。

ページネーションを使いたい

from django.views.generic.list import ListView

...

class PostList(ListView):
  context_object_name = 'posts'
  template_name = 'posts/list.html'
  paginate_by = 2

  def get(self, request, *args, **kwargs):
    posts = Post.objects.all().order_by('id')
    self.object_list = posts
    context = self.get_context_data(object_list=self.object_list, post=posts)
    return self.render_to_response(context)

ListViewを継承(?)してあげて、必要な情報を用意すればおk

あと、チュートリアルじゃ物足りん+情報が少ない気がする(多分)

本買おうかな。。。

【Python】s3にupload、s3からファイルをdeleteをpythonで

Python3でやる。

s3を操作するために必要なモジュールをインストール

$ pip install boto3

また、アクセス権限やキーの設定なども済ます。(これはここでは書かない)

ファイルをアップロード

import boto3
import urllib.request

s3 = boto3.resource('s3')
# bucket名を引数として渡す
bucket = s3.Bucket('commander-aipa')

# yahoo.co.jpの情報を取得
page_text = ''
with urllib.request.urlopen('http://www.yahoo.co.jp') as page:
  for line in page.readlines():
    page_text = page_text + line.decode('utf-8')

# htmlを書き込み
open('index.html', 'a').write(page_text)

# s3へupload
s3_client.upload_file('index.html', 'commander-aipa', 'yahoo.html')

ファイルを削除

# 必要なmoduleや変数は↑と同じです

print([obj_summary.key for obj_summary in bucket.objects.all()]) # ['yahoo.htlm', 'yahoo.html']

# ファイル一覧をlistで取得し、delete()を実行
for obj_summary in bucket.objects.all():
  obj_summary.delete()

これで削除できた。