【17/8/23】副業10日目

Ryo Uehara
Aug 23, 2017 · 5 min read

前回は、開発環境の調査を実施し、ViewからTemplateに値を渡す方法を調査して、実際にテスト動作するところまでやってみた。

今日は、DBでデータを取ってきてTopページに一覧表示する部分の開発を進めたいと思う。

以下のサイトがCRUDの基本を抑えており役にたった。

crud/urls.pyfrom django.conf.urls import url
from crud import views
urlpatterns = [
url(r'^members/$', views.index, name='index'),
url(r'^members/add/$', views.edit, name='add'),
url(r'^members/edit/(?P<id>\d+)/$', views.edit, name='edit'),
url(r'^members/delete/(?P<id>\d+)/$', views.delete, name='delete'),
url(r'^members/detail/(?P<id>\d+)/$', views.detail, name='detail'),
]

url(r'URLのパターンの正規表現', views.pyの対応メソッド, name='ルート名')

r''という記述は''の中では特殊文字をエスケープしないという意味のようです。ルート名はテンプレートでリンク先を指定する際等に利用します。

サイトのキャプチャを表示したいとき、キャプチャ(png)のファイル名をサイトIDに0をつめて10桁の数字にするルールとなっている。
それが、キャプチャの保存先フォルダに保存されるので、HTML側で写真を描画したい場合は、srcで「キャプチャの保存先パス」+「サイトID(0詰め10桁」を指定すれば参照できる。

※この方法はパスを保存する必要がなく、シンプルな設計になる。TreeHouseのときにも有効な手法。

ゼロパディングというみたい。

Python側でゼロパディングする方法は見つかったが、HTML側に渡されたサイトIDをどうすれば加工できるのか?
サーバ側(Django側)で加工したものを渡したかったが、renderメソッドではひとつの変数(辞書コンテキスト)しか渡せないの模様。。。。

HTML側で加工するのはよろしくない気がするので、サーバ側で加工をしたいが、Modelメソッドで取得したQuerySetオブジェクトをDictに変更したが、どのような形で取り出してよいかわからなかった。誰か教えてくれ。。。

sites = Site.objects.all()
sites_dict = dict(si=sites)
print(sites_dict.keys())
print(sites_dict.values())
print(sites_dict.items())
print(sites_dict.QuerySet[0])
dict_keys(['si'])
dict_values([<QuerySet [<Site: google>, <Site: lll>]>])
dict_items([('si', <QuerySet [<Site: google>, <Site: lll>]>)])
→print(sites_dict.QuerySet[0])の表示はエラー

ヒントを探すために、前に使ったbottleの記載方法を見たところ、以下のように一度fetchallで取り出しList化し必要に応じてList→Dictで変換かければ生成できるかもしれない。

# items.dbとつなぐ(なければ作られる)
conn = sqlite3.connect(‘items.db’)
c = conn.cursor()
#c.execute(“select id,firstName,lastName,mail,tel,birthday,sex from users order by id”)
c.execute(“select * from users order by id”)
item_list = []
for row in c.fetchall():
item_list.append({
“id”: row[0],
“firstName”: row[3],
“lastName”: row[4],
“mail”: row[1],
“tel”: row[5],
“birthday”: row[6],
“sex”: row[7]
})
conn.close()

次回は上記を参考にして、View.pyを編集してみる。

続く。

365日備忘録

Full Stack Engineerを目指して

)
    Ryo Uehara

    Written by

    365日備忘録

    Full Stack Engineerを目指して

    Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
    Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
    Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade