2016年5月6日金曜日

djangae で NDB にデータを格納する。

こちらの続きです。
http://yamayoshi.blogspot.jp/2016/05/gaep-django18-djangae.html

1.概要
・モデル(home/models.py)の定義
・URLディスパッチャーの設定(mysite/urls.py と home/urls.py)
・ビュー(home/views.py)を書く
・データを格納
・adminページでデータを確認

2.コードを書く

2-1.モデルの定義

こらを参考に。
https://docs.djangoproject.com/en/1.8/topics/db/models/

$ cd ~/gae/project
$ nano home/models.py
--
# encoding: UTF-8
from django.db import models
from django.utils.http import urlquote

class Link(models.Model):
 url   = models.CharField(max_length=200, primary_key=True)
 title = models.CharField(max_length=200)
 dt    = models.DateTimeField(auto_now=True)

 def get_absolute_url(self):
  return "/url/?" + self.url

 class Meta:
  ordering = ['-dt']
--

設定ファイルにモデル(の入っている場所)を追加

$ nano mysite/settings.py
--
INSTALLED_APPS = (
 〜
 'home', #追加
)
--

adminページでモデルを読み込めるように。

$ nano home/admin.py
--
# encoding: UTF-8
from django.contrib import admin
from .models import *

class LinkAdmin(admin.ModelAdmin):
 list_display = ('url', 'title', 'dt')

admin.site.register(Link, LinkAdmin)
--

2-2.URLディスパッチャーの設定

こちらを参考に。
https://docs.djangoproject.com/en/1.8/topics/http/urls/

まず、メインのディスパッチャー。

$ nano mysite/urls.py
--
# encoding: UTF-8
from django.conf.urls import include, url
from django.contrib import admin
from home import views

urlpatterns = [
 url(r'^', include('home.urls')),
 url(r'^admin/', include(admin.site.urls)),
]
--

続いて、アプリケーションのディスパッチャー。

$ nano home/urls.py
--
# encoding: UTF-8
from django.conf.urls import url
from . import views

urlpatterns = [
 url(r'^test/', views.test),
]
--

2-3.ビューを書く

こちらを参考に。
https://docs.djangoproject.com/en/1.8/topics/http/views/

$ nano home/views.py
--
# encoding: UTF-8
from django.http import *
from .models import *
from datetime import datetime

def test(request):

 for i in range(1, 100):
  res = datetime.now()
  link = Link(url=res, title=i)
  link.save()

 return HttpResponse(res)
--

3.データを格納

開発用サーバを起動
$ python ../google_appengine/dev_appserver.py ./

ブラウザで、testページにアクセス。しばらく待つ。
=> http://localhost:8080/test/

データの格納が完了すると、こんな表示が出ます。
 2016-05-06 01:07:42.358893

4.データを確認

ブラウザで、adminページにアクセスして、データを確認。
=> http://localhost:8080/admin/

 HOME -> Links に、いっぱい入ってます。

5.所感

とりあえず、Django のモデルで、データの格納が出来ました。
裏で NDB が動いてるので、なんらかの制限はありそうですが、普通に使えそうです。

次は、いよいよ、Sitemaps に挑戦!!
実は、これをやりたかったんだよね。

0 件のコメント:

コメントを投稿