岡野真也(tokibito/nullpobug)
for i in range(1, 100):
if i % 15 == 0:
print "FizzBuzz"
elif i % 3 == 0:
print "Fizz"
elif i % 5 == 0:
print "Buzz"
else:
print i
>>> a = [1, 2, 3, 4, 5]
>>> a[0]
1
>>> a[2:]
[3, 4, 5]
>>> a[-1]
5
>>> b = [1, [2, 3], 4, 5]
>>> b[1][0]
2
>>> b[1:3]
[[2, 3], 4]
>>> a = {'hoge': 1, 'fuga': 'ruby'}
>>> a['hoge']
1
>>> a['fuga']
'ruby'
class MyClass(object):
def __init__(self):
self.hoge = 'fuga'
def say_foo(self):
print 'foo'
myinst = MyClass()
print myinst.hoge
myinst.say_foo()
RubyistにPythonを知ってほしい!
DjangoのMVCモデルの解釈
from django.db import models
from datetime import datetime
class Tag(models.Model):
name = models.CharField(max_length=50)
class Entry(models.Model):
title = models.CharField(max_length=100)
content = models.TextField()
pub_date = models.DateTimeField(default=datetime.now)
tags = models.ManyToManyField(Tag, blank=True)
from models import Entry
entry = Entry() # Entryオブジェクトを作成
entry.title = u"Ruby勉強会"
entry.content = u"Django入門"
entry.save() # データベースに保存
entry = Entry.objects.get(pk=1) # プライマリキー指定
entries = Entry.objects.all() # Entryすべて
# 条件指定
entries = Entry.objects.filter(title__startswith=u'Ruby')
from blog.views import index, detail
urlpatterns = patterns('',
# '/'にマッチ
(r'^$', index),
# '/1234/'などにマッチ
(r'^(?P<object_id>\d+)/$', detail),
# '/admin/'にマッチ
(r'^admin/', include('django.contrib.admin.urls')),
)
<html>
<head>
<title>{% block title %}ほげ{% endblock %}</title>
</head>
<body>
{% block main %}{% endblock %}
</body>
</html>
{% extends "base.html" %}
{% block title %}ブログ{% endblock %}
{% block main %}
{% for entry in object_list %}
<h2>{{ entry.title }}</h2>
<p>{{ entry.content|urlize|linebreaksbr }}</p>
{% endfor %}
{% endblock %}
from django.template import Context, loader
from django.http import HttpResponse
from blog.models import Entry
def index(request):
object_list = Entry.objects.all()
t = loader.get_template('index.html')
c = Context({
'object_list': object_list,
})
return HttpResponse(t.render(c))
from django.views.generic.simple import direct_to_template
from blog.models import Entry
def index(request):
return direct_to_template(request,
extra_context={'object_list': Entry.objects.all()})
from django.conf.urls.defaults import *
from blog.models import Entry
urlpatterns = patterns('django.views.generic.simple',
(r'^$', 'direct_to_template',
{'queryset': Entry.objects.all()}),
)
from django import newforms as forms
from blog.models import Tag
class EntryForm(forms.Form):
title = forms.CharField(max_length=30,
widget=forms.TextInput, label='Title')
content = forms.CharField(
widget=forms.Textarea, label='Content')
>>> form = EntryForm()
>>> print form.as_p()
<p><label for="id_title">Title:</label> <input id="id_title"
type="text" name="title" maxlength="30" /></p>
<p><label for="id_content">Content:</label> <textarea id="id_content"
rows="10" cols="40" name="content"></textarea></p>
ModelFormクラス(開発版)
from django import newforms as forms
from blog.models import Entry
class EntryForm(forms.ModelForm):
class Meta:
model = Entry
fields = ('title', 'content',)
form = EntryForm(request.POST)
if form.is_valid():
form.save()
- myproject
__init__.py .. Pythonのモジュールに必要
settings.py .. 設定ファイル
manage.py
urls.py
- blog .. Blogアプリケーション
__init__.py
models.py
views.py
- wiki .. Wikiアプリケーション
__init__.py
models.py
views.py
- static .. 静的ファイル
- img
- templates .. テンプレートディレクトリ
base.html
- blog
entry_list.html
entry_detail.html
- wiki
page_list.html
開発版はインストールで注意
ご清聴ありがとうございました