SlideShare une entreprise Scribd logo
1  sur  152
熱血!!Django_Fukuoka!!
@さくらクラブ
Shuya Motouchi
@nwiizo
あじぇん
だ!
自己紹介
Pythonについて
HTTPについて
お昼休憩
Djangoについて
反省会
Who I am !!!
Shuya Motouchi
21 age
Network infrastructure
python C++ Haskell
What Python ??
What Python ??
•Pythonはさまざまな分野のアプリケーションで
使われている、極めてパワフルでオープンソー
スな動的プログラミング言語です。
•記述が簡単で可読性が高い
•データ解析や数値計算にも強い!!!
What Python ??
•Pythonはさまざまな分野のアプリケーションで
使われている、極めてパワフルなオープンソー
スな動的プログラミング言語です。
•記述が簡単で可読性が高い
•データ解析や数値計算にも強い!!!
福岡では普及率が最悪
What Python ??
機械学習 数値演算
セキュリティ Webプログラミング
What Python ??
数値演算
データの
取得
データの
加工
データの
出力
What Python ??
数値演算
IPython:先進的なShell http://ipython.org/
Numpy: 強力な 数値配列 オブジェクトとそれらを操作する強力
なルーチンを提供 http://www.numpy.org/
Scipy: 高レベルなデータ処理ルーチン, 最適化, 回帰, 補間等
http://www.scipy.org/
Matplotlib: 2次元可視化
http://matplotlib.sourceforge.net/
Mayavi: 3次元可視化
http://code.enthought.com/projects/mayavi/
What Python ??
数値演算
What Python ??
機械学習
Pythonには機械学習のためにデータ
を処理するライブラリ(数値演算をす
るためのライブラリや図を作成するた
めのライブラリなど……)がそろって
いて、呼び出したり組み合わせて処
理したり……といったことがしやすい
ため、
多くの人が機械学習で使っています。
What Python ??
機械学習
What Python ??
セキュリティ
Pythonは情報セキュリティの世界では
他よりも先んじているプログラミング言
語です。Pythonを使ったrawソケットや
Scapyライブラリなどネットワーク関連の
パッケージやCOMをPythonから扱えて
Volatilityフレームワークなどシステム関
連のトピックも扱えます。
What Python ??
セキュリティ
What Python ??
Webプログラミング
HTTPBasicServerなどがあり非常に
簡単にWebプログラミングができる。
WebフレームワークにはFlaskや
Djangoなどがある。
What Python ??
Webプログラミング
Python introduction
Python introduction
•前回の勉強会(課題)
https://github.com/nwiizo/IntroducingQuiz
Python introduction
インタープリタを起動しましょう
$python3
もしくは
$ipython3
Python introduction
Hello World
print(“Hello World”) #は コメントアウト
Python introduction
変数
データ型を明記することがない動的言語
Python introduction
変数
データ型を明記することがない動的言語
C言語 Python
int a;
a = 1;
a = 1
Python introduction
変数
変数名 = 値
で値を代入することができる。
>>var1 = 1
>>var1 = var + 1
>>print(var1)
2
Python introduction
エスケープシーケンス(オマケ)
改行 : バックスラッシュと改行が無視される
 : バックスラッシュ()
' : シングルクォート(')
" : ダブルクォート(")
a : ベル(BEL)
b : バックスペース(BS)
f : フォームフィード(FF)
Python introduction
エスケープシーケンス(オマケ)
n : 改行(LF)
r : 復帰(CR)
t : タブ(TAB)
v : 垂直タブ(VT)
nnn : 8進表記文字(nは0~7)
xnn : 16進表記文字(nは0~f)
uxxxx : ユニコード文字xxxx (例: u"u3042")
U....xxxx : ユニコード文字xxxxxxxx (例: U"U00003042")
N{name} : Unicodeデータベース文字 (例: u"N{HIRAGANA
LETTER A}")
Python introduction
•四則演算
a = 1 + 1 # 2
s = 3 – 1 # 2
m = 3 * 2 # 6
d = 6 / 3 # 2.0
Python introduction
•インデント
C/C++やPHP では文を { ... } で囲むことでブロック(複文)を
構成しますが、Python ではインデント(行頭の空白文字の
数)が重要な意味を持ち、同じ数の空白でインデントされた
文がブロックとみなされます。
Python introduction
•インデント
a = 3
if a == 5:
print "AAA" # if文の対象
print "BBB" # if文の対象
print "CCC" # if文の対象ではない
Python introduction
•エンコードルール
• 日本語など、ASCII以外の文字を含むスクリプトを作成す
る場合は、スクリプトの1行目、または2行目に、下記の形
式でスクリプトの エンコードルール(coding:) を指定してく
ださい。
Python introduction
•エンコードルール
# -*- coding: utf-8 -*-
Python introduction
•リスト
10 20 30 40a
0 321
-4 -1-2-3
Python introduction
•リスト
10 20 30 40a
a[開始:終了:繰り返し]
Python introduction
•リスト
a = [10, 20, 30, 40]
a[0] # 10
a[1] # 20
Python introduction
•リスト
a = [10, 20, 30, 40]
a[0:2] # [10,20,30]
a[0:-1] # [10,20,30]
a[0::2] #[10,30]
Python introduction
•制御構文
もし~ならば(if,else,elif)
Python introduction
•制御構文
if expression:
suite...
[elif expr:
suite...]
[else:
suite...]
Python introduction
•制御構文
if num > 10:
print “大きい"
elif num == 10:
print “等価"
else:
print “小さい"
Python introduction
•制御構文
~のあいだ(while, else)
Python introduction
•制御構文
while expression:
suite...
[else:
suite...]
Python introduction
•制御構文
n = 0
while n < 10:
print n
n += 1
else:
print 'END'
Python introduction
•制御構文
~のあいだ(for, in)
Python introduction
•制御構文
for var in expression:
suite...
[else:
suite...]
Python introduction
•制御構文
for n in [1, 2, 3]:
print n #=> 1, 2, 3
Python introduction
•制御構文
for n in range(10):
print n
Python introduction
•制御構文(課題)
FizzBuzz:3の倍数でFizz5の倍数で
Buzzsそれ以外の時は数字
を出力してください
$休憩
Python introduction
•制御構文(オマケ)
ループを抜ける(break)
Python introduction
•制御構文(オマケ)
for n in range(10):
if n == 5:
break
print n # 0, 1, 2, 3, 4
Python introduction
•制御構文(オマケ)
ループを繰り返す(continue)
Python introduction
•制御構文(オマケ)
for n in range(10):
if n == 5:
continue
print n
Python introduction
•制御構文(オマケ)
例外処理(try, except, else, finally, raise)
Python introduction
•制御構文(オマケ)
try:
suite...
[except [expression]:
suite...]
[else:
suite...]
[finally:
suite...]
Python introduction
str = 'ABC'
try:
c = str[5]
except IOError:
print 'IOError‘
except IndexError:
print 'IndexError'
except:
print 'Unknown'
else:
print 'Other'
finally:
print 'Finally'
Python introduction
•制御構文(オマケ)
with構文(with)
Python introduction
•制御構文(オマケ)
with expression [as target] [, expression [as target]]... :
suite...
Python introduction
•制御構文(オマケ)
f = open("test.txt")
print f.read()
f.close()
with open("test.txt") as f:
print f.read()
Python introduction
•制御構文(オマケ)
アサーション文(assert)
Python introduction
•制御構文(オマケ)
assert はテストの際に値が期待通りに設定されてい
るかを確認するための仕組みです。__debug__ が
True の時のみ動作し、式を評価して偽であれば、
AssertionError例外を発生させます。python を -O オ
プション付きで起動することで、__debug__ の値は
False になります。
Python introduction
•制御構文(オマケ)
パス文(pass)
Python introduction
•制御構文(オマケ)
pass は何もしない文です。中身の無い関
数やクラスを作成する際に使用されます。
$休憩
Python introduction
•関数
def 文を用いて関数(function)を定義す
ることができます。
Python introduction
•関数
def add(x, y):
print x + y
add(3,10) #=>13
Python introduction
•関数(課題)
ズンドコキヨシ関数を作って!!!
お昼休憩…。
• 質問もしてください!!!
• ごはん行く人は一緒に行きましょう!!!
What is Hypertext Transfer Protocol
WebブラウザとWebサーバの間でHTMLな
どのコンテンツの送受信に用いられる通
信プロトコルである。ハイパーテキスト
転送プロトコルとも呼ばれる。
What is Hypertext Transfer Protocol
WebブラウザとWebサーバの間でHTMLな
どのコンテンツの送受信に用いられる通
信プロトコルである。ハイパーテキスト
転送プロトコルとも呼ばれる。
HTTPです。
最初のバージョン
• The response from the server was always an HTML page.
What is Hypertext Transfer Protocol
現在のHTTPリクエスト
HTTP/1.1
• WiresharkでHTTP1.1の中身を見るとこんな感じ
What is Hypertext Transfer Protocol
Webアプリケーション
1.Webブラウザを通してユーザが
サーバーにリクエストを送る
2.Webアプリケーションは受け取った
リクエストに対応した結果を返す。
3.Webアプリケーションで処理した
結果をWebブラウザに返す
What is Web Application Framework
• 動的な ウェブサイト、Webアプリケーション、Webサービ
スの開発をサポートするために設計されたアプリケーショ
ンフレームワークである。
• フレームワークの目的は、Web開発で用いられる共通した
作業に伴う労力を軽減することである。
• たとえば、多数のフレームワークがデータベースへのアク
セスのためのライブラリや、テンプレートエンジン、セッ
ション管理を提供し、コードの再利用を促進させるものも
ある。
その他のフレームワーク:Flask,Pyramid,Bottle,Tornado Ruby on
Django introduction
What is Django
•Django は Python で書かれたオープンソース
のWebフレームワーク。Webアプリケーショ
ン開発に共通するメカニズムを提供し、DRY
(Don't Repeat Yourself) の法則に沿った開発を、
より簡単に、より迅速に実現します。
リクエスト処理に関するフロー図
URLディスパッチャ ビュー モデル
テンプレート
システム
キャッシュシステム
管理
インターフェース
プロジェクト設定
ファイル
プロジェクト管理用
スクリプト
Django管理用
スクリプト
アプリケーション
C
キャッシュ
RDB
プロジェクト
リクエスト処理に関すること
1. クライアント(C)からのHTTPリクエストは
Djangoのリクエストとして扱われます。
2. リクエストされたURLに対応するビューを、
URLディスパッチャによって検索して呼び出
します。
3. 呼び出されたビューにおいて、必要ならばモ
デルやテンプレートを用いてレスポンスオブ
ジェクトを生成します。
4. レスポンスオブジェクトはHTTPレスポンスと
してクライアントに送り返されます。
$休憩
アプリの解説をしていきま
す。
アプリ生成の流れ!!!
1. プロジェクトの作成
2. アプリケーションの作成
3. adminユーザーの作成
4. モデルの作成
5. URLディスパッチャの作成
6. Viewの作成
7. テンプレートの作成
8. 課題
https://github.com/nwiizo/Django_Fukuoka
参照すると今から作るアプリに関する情報
が載っていますのでそちらを参照してくだ
さい
プロジェクト
• Djangoインスタンスの全設定を持ったPythonパッケージです。
• 1つのWebページを1つのプロジェクトとして作る場合がほと
んどです。
• プロジェクト内には、プロジェクト固有のアプリケーションを
新規に作成して配置したり、Webサイトごとの設定(データベー
ス設定、Djangoのオプション設定、アプリケーション毎の設定
など)を持ちます。
$django-admin startproject 【プロジェクト名】
• このコマンドでプロジェクトディレクトリと初期設定ファイルが生成
されます。
プロジェクトの作成
環境構築
$python3 -m venv myvenv
$source myvenv/bin/activate
$pip install django==1.8
プロジェクトの作成
環境構築(トラブルシューティング)
$sudo apt-get install python-virtualenv
$virtualenv --python=python3.4 myvenv
プロジェクトの作成
プロジェクトの作成
$ django-admin startproject mysite .
プロジェクトの作成
プロジェクトの作成
├───manage.py
└───mysite
settings.py
urls.py
wsgi.py
__init__.py
TIME_ZONE = 'Asia/Tokyo'
USE_TZ = False
プロジェクトの作成
mysite/settings.py タイムゾーンの設定
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
プロジェクトの作成
mysite/settings.py データベースの設定
$ python3 manage.py migrate
プロジェクトの作成
データベースの作成
$python manage.py runserver
プロジェクトの作成
サーバーを動かそう!!
http://127.0.0.1:8000/ にアクセス
プロジェクトの作成
確認
プロパティとアクションの塊
プロジェクトの作成
オブジェクト is なに??
状態(プロパティ)と命令(アクション)の塊
プロジェクトの作成
オブジェクト is なに??
プロジェクトの作成
猿をモデルにしたいときには
猿【monkey】オブジェクトを作ります。
プロジェクトの作成
猿をモデルにしたいときには
monkey
============
年齢 age
性別 sex
種族 type
機嫌 mood
どこのグループに所属か w_group
プロジェクトの作成
猿をモデルにしたいときには(プロパティ)
monkey
============
木に登る Climb_a_tree()
引っ掻く scratch()
喧嘩をする fight()
食べる feed(food)
プロジェクトの作成
猿をモデルにしたいときには(アクション)
プロジェクトの作成
作りたいものは猿か??
モデルの作成
ブログのページとしてほしいもの
タイトル
本文
誰が書いたか
作った日時
公開情報
モデルの作成
ブログのページとしてほしいもの
Post
-----------------------------------
title
text
author
created_date
published_date
モデルの作成
ブログのページとしてほしいもの
アプリケーション
• 単機能のWebアプリケーションを表すPythonパッケージになり
ます。
• 中身としてはただのパッケージなのでPATHさえ通っていればど
こにファイルを配置してもよいです。
• プロジェクトやほかのアプリケーションとの依存をなるべく減
らして、機能を分離させておけば、別のプロジェクトに再利用
できます。
$python3 manage.py startapp 【アプリケーション名】
• このコマンドでアプリを生成することができます。
$python manage.py startapp blog
アプリケーションの作成
アプリケーションの開始
blog
migrations
__init__.py
__init__.py
admin.py
models.py
tests.py
views.py
アプリケーションの作成
ディレクトリの確認
INSTALLED_APPS = (
~~~~~~~~~~~~~~~~~~~~~
‘blog’, #ブログ項目の追加
)
モデルの作成
プロジェクト側への通知(mysite/settings.py)
https://github.com/nwiizo/Django_Fukuoka/blob/master/dj
ango_stady/mysite/mysite/blog/models.py
ここを参照してください
モデルの作成
ブログモデルの作成(blog/models.py)
モデル
• DjangoはO/Rマッパー(Object-Relation mapper)を提供しているた
め、Pythonコードでデータベースレイアウトを記述できます。
• 各モデルはdjango.db.modelsModelクラスを継承したクラスで
データベースの1テーブルに対応します。データベースの
フィールドやリレーション、振る舞いをモデルクラスの属性や
メゾットとして定義することでデータベースへのアクセスAPIを
使えます。
リクエスト処理に関するフロー図
URLディスパッチャ ビュー モデル
テンプレート
システム
キャッシュシステム
管理
インターフェース
プロジェクト設定
ファイル
プロジェクト管理用
スクリプト
Django管理用
スクリプト
アプリケーション
C
キャッシュ
RDB
プロジェクト
fromとかimportで始まる行は他のファイルから再利用を
するために追加する行です。
モデルの作成
ブログモデルの作成(blog/models.py)
class Post(models.Model):モデルを定義します。
• classはオブジェクトを定義します。
• Postはモデルの名前です。
• models.ModelはポストがDjango Modelだという意味で、
Djangoが、これはデータベースに保存すべきものだ
と分かるようにしています。
モデルの作成
プロパティ(状態)の定義
title text、created_date published_date author
• models.CharField - テキスト数を定義するフィールド
• models.TextField - 制限無しの長いテキスト用
• models.DateTimeField - 日付と時間のフィールド
• models.ForeignKey - これは他のモデルへのリンク
モデルの作成
アクションの定義
def publish(self):
self.published_date = timezone.now()
self.save()
これは、ブログを公開するメソッドです。
モデルの作成
$python3 manage.py makemigrations blog
モデルの作成
作成は完了したのでモデル用のテーブルを作成しま
す。
from django.contrib import admin
from .models import Post
admin.site.register(Post)
モデルの作成
ログインページの作成!!! blog/admin.py
Postモデルをimportしています。モデルをadminページ
で見れるようにするには、モデルを
admin.site.register(Post)で登録する必要があります。
モデルの作成
ログインページの作成!!! blog/admin.py
$python3 manage.py createsuperuser
モデルの作成
ユーザーの作成!!!
$休憩
URLディスパッチャ
• URLディスパッチャ機構はフレームワークに依存した制約、拡
張士の制限がなくなり黒魔術を使わずにURL設計を保てるよう
な仕組みを提供します。
• URLは、正規表現で書かれたURLのパターンとPythonの関数の
マッピングを定義したURLconfモジュールに記述します。
• URLconfはアプリケーションごとに分割できるため、アプリケー
ションの再利用性を高めることができます。
• URLに名前を付けて定義することでコードやテンプレートから
はその名前でURLを参照できるようになり、URL設計をコードか
ら分離できます。
リクエスト処理に関するフロー図
URLディスパッチャ ビュー モデル
テンプレート
システム
キャッシュシステム
管理
インターフェース
プロジェクト設定
ファイル
プロジェクト管理用
スクリプト
Django管理用
スクリプト
アプリケーション
C
キャッシュ
RDB
プロジェクト
URLに関すること
DjangoではURL_conf(URL設定)と呼ばれるものを使い
ます。
URLに関すること
・書き方
from django.conf.urls import include, url
urlpatterns = [
url(r‘URL名/’, include(呼び出したいモジュール)),
]
mysite/urls.py ファイル
URLに関すること
from django.conf.urls import include, url
from django.contrib import admin
urlpatterns = [
url(r'^admin/', include(admin.site.urls)),
url(r'', include('blog.urls')),
]
mysite/urls.py ファイル
URLに関すること
from django.conf.urls import include, url
from . import views
urlpatterns = [
url(r'^$', views.post_list),
]
blog/urls.py ファイル
URLに関すること
127.0.0.1:8000にアクセス・・・。
blog/urls.py ファイル
URLに関すること
views.post_listがないのでアクセスできないよぉ・・・。
blog/urls.py ファイル
ビュー
• ビューは要求されたページのHttpResponseオブジェクトな
どのHTTPレスポンスを返す関数です。
• リクエストパラメータからデータを取得し、テンプレートを読
み込み、取得データを使ってテンプレートをレンダリングして
返す。ような処理が一般的です。
リクエスト処理に関するフロー図
URLディスパッチャ ビュー モデル
テンプレート
システム
キャッシュシステム
管理
インターフェース
プロジェクト設定
ファイル
プロジェクト管理用
スクリプト
Django管理用
スクリプト
アプリケーション
C
キャッシュ
RDB
プロジェクト
viewsに関すること
from django.shortcuts import render
# Create your views here.
def post_list(request):
return render(request, 'blog/post_list.html', {})
blog/views.py ファイル
HTMLに関すること
HTML は "HyperText Markup Language"の略です。
HyperTextとは、テキストなどをクリックする
と別のページに繋がるハイパーリンクが使え
るということです。Markupは、目印をつける
という意味です。文章の各部分がどのような
役割を果たしているかブラウザに伝えます。<
と >に囲まれたタグによってマークアップされ
たものは、要素と呼ばれます。
HTMLに関すること
テンプレートは blog/templates/blog ディレクトリに保
存します。
post_list.html ファイルの作成。
クエリセットに関すること
ポスト内容を保存する為の Post モデルは、
models.py に定義しました。ポストの一覧を表
示する post_list は views.py にあり、そこにテン
プレートも加わりました。
クエリセットに関すること
ビュー が モデルとテンプレートの橋渡しを
してくれます。私達が作業している post_list
ビュー の場合、表示したいデータを取り出し
て、テンプレートファイルに渡すことになり
ます。基本的に、どのモデルのデータを、ど
のテンプレートに表示させるかは、 ビューに
記述します。
クエリセットに関すること
from django.shortcuts import render
from .models import Post
blog/views.py ファイル
クエリセットに関すること
from django.shortcuts import render
from django.utils import timezone
from .models import Post
def post_list(request):
posts =
Post.objects.filter(published_date__lte=timezone.now()).order_by('published_date'
)
return render(request, 'blog/post_list.html', {'posts': posts})
blog/views.py ファイル
$休憩
テンプレートシステム
• Djangoのテンプレートシステムは表示を担うものであってロ
ジックを記述する場所ではありません。
• デザインとコンテンツ、コードを分離する、パワフルで拡張性
が非常に高いです。
• XMLベースではなくテキストベースのテンプレートであるため、
XMLやHTMLに限らず、EメールやJavasScript、CSVなど、どんなテ
キストフォーマットにもテンプレートを使えます。
• テンプレート継承を使えばいい感じのUIをいい感じに使えます。
リクエスト処理に関するフロー図
URLディスパッチャ ビュー モデル
テンプレート
システム
キャッシュシステム
管理
インターフェース
プロジェクト設定
ファイル
プロジェクト管理用
スクリプト
Django管理用
スクリプト
アプリケーション
C
キャッシュ
RDB
プロジェクト
テンプレートに関すること
<div>
<h1><a href="/">Django Fukuoka Blog</a></h1>
</div>
{% for post in posts %}
<div>
<p>published: {{ post.published_date }}</p>
<h1><a href="">{{ post.title }}</a></h1>
<p>{{ post.text|linebreaks }}</p>
</div>
{% endfor %}
blog/templates/blog/post_list.html ファイル
cssに関すること
Cascading Style Sheets (CSS)とは、HTMLな
どのマークアップ言語で書かれたWebサイ
トの見た目や書式を記述するための言語
です。
cssに関すること
CSS
https://github.com/nwiizo/Django_Fukuoka/blob/master/djan
go_stady/mysite/mysite/static/css/blog.css
HTML
https://github.com/nwiizo/Django_Fukuoka/blob/master/djan
go_stady/mysite/mysite/blog/templates/blog/base.html
cssに関すること
mysite/settings.pyファイルに
STATICFILES_DIRS = (
os.path.join(BASE_DIR, "static"),
)
を記載する。
manage.pyのディレクトリにstaticファイルを作る。
cssに関すること
static
css
blog.css
CSSの下にblog.cssを作成します。
cssに関すること
h1 a { color:#FCA205; }
h1 a はCSSセレクタです。h1 要素の中にあるa 要素 (例:このようなコードのこと <h1><a
href="">link</a></h1>)にスタイルを適用しますという意味になります。この場合、テキス
トの色を#FCA205、オレンジ色にする、という意味です。もちろん、あなたの好きな色に変
更してもいいです.
cssに関すること
<link rel="stylesheet" href="{% static 'css/blog.css' %}">
これを記述するといいのですがすべてを記述していくのは非常に
面倒ですのでオープンソースのテンプレートを記述していきます。
cssに関すること
<link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
<link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap-theme.min.css">
<link rel="stylesheet" href="{% static 'css/blog.css' %}">
これを記述するといいのですがすべてを記述していくのは非常に
面倒ですのでオープンソースのテンプレートを記述していきます。
$休憩
テンプレートの拡張
ウェブサイトを作る時、どのページでも同じHTMLタグを使うことがありますよ
ね。たとえば、ヘッダーやフッター部分は、どのページでも同じものを使いま
す。そういう時に、全てのHTMLファイルに対して、同じ作業を繰り返さなくて
すみます。一箇所だけ変更すれば、その変更は全てのページに適用されま
す。
では、やっていきます。
https://github.com/nwiizo/Django_Fukuoka/blob/master/django_stady/mysi
te/mysite/blog/templates/blog/base.html
を見ていきましょう!!!
テンプレートの拡張
base.html に block を記述しました。そうすると、別のテンプレートの内
容を、この block の部分に挿入することが出来るようになります。これ
が、テンプレートの拡張です。
{% block content %}
{% endblock %}
テンプレートの拡張
post_list.htmlで記載しています。
{% block content %}
{% for post in posts %}
<div class="post">
<div class="date">
{{ post.published_date }}
</div>
<h1><a href="{% url 'blog.views.post_detail'
pk=post.pk %}">{{ post.title }}</a></h1>
<p>{{ post.text|linebreaks }}</p>
</div>
{% endfor %}
{% endblock content %}
テンプレートの拡張
extendsで読み込みをしています。
{% extends 'blog/base.html' %}
テンプレートの拡張
extendsで読み込みをしています。
{% extends 'blog/base.html' %}
課題()
ブログ記事の追加と編集をウェブサイト
上で出来るようにしましょう
最後に。
• PythonとRubyの表現力はあまり変わらないので
Railsでも同じ開発コストで同じようなものができる。
• 1.10になってバグでハマることもなくなった。
• 就職で東京に行くので時期的にも福岡で最後の勉
強会なのでみんなにもっと頑張って盛り上げてほし
い

Contenu connexe

Tendances

Polyphony の並列化
Polyphony の並列化Polyphony の並列化
Polyphony の並列化ryos36
 
Apilecture for 2014/02/22 at shannonlab
Apilecture for 2014/02/22 at shannonlabApilecture for 2014/02/22 at shannonlab
Apilecture for 2014/02/22 at shannonlabYutaka Kobayshi
 
C++勉強会in広島プレゼン資料
C++勉強会in広島プレゼン資料C++勉強会in広島プレゼン資料
C++勉強会in広島プレゼン資料真一 北原
 
「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12
「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12
「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12Takanori Suzuki
 
Python と型ヒント (Type Hints)
Python と型ヒント (Type Hints)Python と型ヒント (Type Hints)
Python と型ヒント (Type Hints)Tetsuya Morimoto
 
謎の言語Forthが謎なので実装した
謎の言語Forthが謎なので実装した謎の言語Forthが謎なので実装した
謎の言語Forthが謎なので実装したt-sin
 
Rpn and forth 超入門
Rpn and forth 超入門Rpn and forth 超入門
Rpn and forth 超入門Yoshitaka Seo
 
Python 3.6 リリースパーティー 発表資料
Python 3.6 リリースパーティー 発表資料Python 3.6 リリースパーティー 発表資料
Python 3.6 リリースパーティー 発表資料Atsuo Ishimoto
 
Goroutineとchannelから始めるgo言語@初心者向けgolang勉強会2
Goroutineとchannelから始めるgo言語@初心者向けgolang勉強会2Goroutineとchannelから始めるgo言語@初心者向けgolang勉強会2
Goroutineとchannelから始めるgo言語@初心者向けgolang勉強会2Takuya Ueda
 
Pythonと型チェッカー
Pythonと型チェッカーPythonと型チェッカー
Pythonと型チェッカーTetsuya Morimoto
 
High performance python computing for data science
High performance python computing for data scienceHigh performance python computing for data science
High performance python computing for data scienceTakami Sato
 
Security.gs fes 2010 in tokyo
Security.gs fes 2010 in tokyoSecurity.gs fes 2010 in tokyo
Security.gs fes 2010 in tokyoRen Sakamoto
 
Python パッケージの影響を歴史から理解してみよう!
Python パッケージの影響を歴史から理解してみよう!Python パッケージの影響を歴史から理解してみよう!
Python パッケージの影響を歴史から理解してみよう!Kir Chou
 
Sounds Like Common Lisp - ゼロからはじめるサウンドプログラミング
Sounds Like Common Lisp - ゼロからはじめるサウンドプログラミングSounds Like Common Lisp - ゼロからはじめるサウンドプログラミング
Sounds Like Common Lisp - ゼロからはじめるサウンドプログラミングt-sin
 
なぜ科学計算にはPythonか?
なぜ科学計算にはPythonか?なぜ科学計算にはPythonか?
なぜ科学計算にはPythonか?Aki Ariga
 
Tensorflowユーザから見た Alpha(Go)Zero, Ponanza (TFUG #7)
Tensorflowユーザから見た Alpha(Go)Zero, Ponanza (TFUG #7)Tensorflowユーザから見た Alpha(Go)Zero, Ponanza (TFUG #7)
Tensorflowユーザから見た Alpha(Go)Zero, Ponanza (TFUG #7)Katsuki Ohto
 
Pythonはどうやってlen関数で長さを手にいれているの?
Pythonはどうやってlen関数で長さを手にいれているの?Pythonはどうやってlen関数で長さを手にいれているの?
Pythonはどうやってlen関数で長さを手にいれているの?Takayuki Shimizukawa
 
Chainerで学ぶdeep learning
Chainerで学ぶdeep learningChainerで学ぶdeep learning
Chainerで学ぶdeep learningRetrieva inc.
 
Goroutineと channelから はじめるgo言語
Goroutineと channelから はじめるgo言語Goroutineと channelから はじめるgo言語
Goroutineと channelから はじめるgo言語Takuya Ueda
 

Tendances (20)

Python入門
Python入門Python入門
Python入門
 
Polyphony の並列化
Polyphony の並列化Polyphony の並列化
Polyphony の並列化
 
Apilecture for 2014/02/22 at shannonlab
Apilecture for 2014/02/22 at shannonlabApilecture for 2014/02/22 at shannonlab
Apilecture for 2014/02/22 at shannonlab
 
C++勉強会in広島プレゼン資料
C++勉強会in広島プレゼン資料C++勉強会in広島プレゼン資料
C++勉強会in広島プレゼン資料
 
「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12
「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12
「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12
 
Python と型ヒント (Type Hints)
Python と型ヒント (Type Hints)Python と型ヒント (Type Hints)
Python と型ヒント (Type Hints)
 
謎の言語Forthが謎なので実装した
謎の言語Forthが謎なので実装した謎の言語Forthが謎なので実装した
謎の言語Forthが謎なので実装した
 
Rpn and forth 超入門
Rpn and forth 超入門Rpn and forth 超入門
Rpn and forth 超入門
 
Python 3.6 リリースパーティー 発表資料
Python 3.6 リリースパーティー 発表資料Python 3.6 リリースパーティー 発表資料
Python 3.6 リリースパーティー 発表資料
 
Goroutineとchannelから始めるgo言語@初心者向けgolang勉強会2
Goroutineとchannelから始めるgo言語@初心者向けgolang勉強会2Goroutineとchannelから始めるgo言語@初心者向けgolang勉強会2
Goroutineとchannelから始めるgo言語@初心者向けgolang勉強会2
 
Pythonと型チェッカー
Pythonと型チェッカーPythonと型チェッカー
Pythonと型チェッカー
 
High performance python computing for data science
High performance python computing for data scienceHigh performance python computing for data science
High performance python computing for data science
 
Security.gs fes 2010 in tokyo
Security.gs fes 2010 in tokyoSecurity.gs fes 2010 in tokyo
Security.gs fes 2010 in tokyo
 
Python パッケージの影響を歴史から理解してみよう!
Python パッケージの影響を歴史から理解してみよう!Python パッケージの影響を歴史から理解してみよう!
Python パッケージの影響を歴史から理解してみよう!
 
Sounds Like Common Lisp - ゼロからはじめるサウンドプログラミング
Sounds Like Common Lisp - ゼロからはじめるサウンドプログラミングSounds Like Common Lisp - ゼロからはじめるサウンドプログラミング
Sounds Like Common Lisp - ゼロからはじめるサウンドプログラミング
 
なぜ科学計算にはPythonか?
なぜ科学計算にはPythonか?なぜ科学計算にはPythonか?
なぜ科学計算にはPythonか?
 
Tensorflowユーザから見た Alpha(Go)Zero, Ponanza (TFUG #7)
Tensorflowユーザから見た Alpha(Go)Zero, Ponanza (TFUG #7)Tensorflowユーザから見た Alpha(Go)Zero, Ponanza (TFUG #7)
Tensorflowユーザから見た Alpha(Go)Zero, Ponanza (TFUG #7)
 
Pythonはどうやってlen関数で長さを手にいれているの?
Pythonはどうやってlen関数で長さを手にいれているの?Pythonはどうやってlen関数で長さを手にいれているの?
Pythonはどうやってlen関数で長さを手にいれているの?
 
Chainerで学ぶdeep learning
Chainerで学ぶdeep learningChainerで学ぶdeep learning
Chainerで学ぶdeep learning
 
Goroutineと channelから はじめるgo言語
Goroutineと channelから はじめるgo言語Goroutineと channelから はじめるgo言語
Goroutineと channelから はじめるgo言語
 

Similaire à Django_Fukuoka

Sinatra風マイクロフレームワークで始めるPython
Sinatra風マイクロフレームワークで始めるPythonSinatra風マイクロフレームワークで始めるPython
Sinatra風マイクロフレームワークで始めるPythonkuroneko1988
 
Pyconjp2014_implementations
Pyconjp2014_implementationsPyconjp2014_implementations
Pyconjp2014_implementationsmasahitojp
 
「Python言語」はじめの一歩 / First step of Python
「Python言語」はじめの一歩 / First step of Python「Python言語」はじめの一歩 / First step of Python
「Python言語」はじめの一歩 / First step of PythonTakanori Suzuki
 
LT: 今日帰ってすぐに始められるPython #nds45
LT: 今日帰ってすぐに始められるPython #nds45LT: 今日帰ってすぐに始められるPython #nds45
LT: 今日帰ってすぐに始められるPython #nds45civic Sasaki
 
DATUM STUDIO PyCon2016 Turorial
DATUM STUDIO PyCon2016 TurorialDATUM STUDIO PyCon2016 Turorial
DATUM STUDIO PyCon2016 TurorialTatsuya Tojima
 
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版Katsuhiro Morishita
 
これからの「言語」の話をしよう ―― 未来を生きるためのツール
これからの「言語」の話をしよう ―― 未来を生きるためのツールこれからの「言語」の話をしよう ―― 未来を生きるためのツール
これからの「言語」の話をしよう ―― 未来を生きるためのツールNobuhisa Koizumi
 
cs-10. Python の基礎(オブジェクト,メソッド,引数,文字列)
cs-10. Python の基礎(オブジェクト,メソッド,引数,文字列) cs-10. Python の基礎(オブジェクト,メソッド,引数,文字列)
cs-10. Python の基礎(オブジェクト,メソッド,引数,文字列) kunihikokaneko1
 
Python Kyoto study
Python Kyoto studyPython Kyoto study
Python Kyoto studyNaoya Inada
 
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情Junichi Ishida
 
PyPy 紹介
PyPy 紹介PyPy 紹介
PyPy 紹介shoma h
 
Introduction to Chainer (LL Ring Recursive)
Introduction to Chainer (LL Ring Recursive)Introduction to Chainer (LL Ring Recursive)
Introduction to Chainer (LL Ring Recursive)Kenta Oono
 
私の好きなPython構文 vol.2 #nds46
私の好きなPython構文 vol.2 #nds46私の好きなPython構文 vol.2 #nds46
私の好きなPython構文 vol.2 #nds46civicpg
 
Python界隈の翻訳プロジェクト
Python界隈の翻訳プロジェクトPython界隈の翻訳プロジェクト
Python界隈の翻訳プロジェクトTetsuya Morimoto
 
cs-11. Python の条件分岐と繰り返し,ステップ実行
cs-11. Python の条件分岐と繰り返し,ステップ実行cs-11. Python の条件分岐と繰り返し,ステップ実行
cs-11. Python の条件分岐と繰り返し,ステップ実行kunihikokaneko1
 
Hello World Python featuring GAE
Hello World Python featuring GAEHello World Python featuring GAE
Hello World Python featuring GAEMaito Kuwahara
 
Python基礎その1
Python基礎その1Python基礎その1
Python基礎その1大貴 末廣
 
po-6. 繰り返し実行(ループ),ステップ実行
po-6. 繰り返し実行(ループ),ステップ実行po-6. 繰り返し実行(ループ),ステップ実行
po-6. 繰り返し実行(ループ),ステップ実行kunihikokaneko1
 

Similaire à Django_Fukuoka (20)

Sinatra風マイクロフレームワークで始めるPython
Sinatra風マイクロフレームワークで始めるPythonSinatra風マイクロフレームワークで始めるPython
Sinatra風マイクロフレームワークで始めるPython
 
Pyconjp2014_implementations
Pyconjp2014_implementationsPyconjp2014_implementations
Pyconjp2014_implementations
 
「Python言語」はじめの一歩 / First step of Python
「Python言語」はじめの一歩 / First step of Python「Python言語」はじめの一歩 / First step of Python
「Python言語」はじめの一歩 / First step of Python
 
LT: 今日帰ってすぐに始められるPython #nds45
LT: 今日帰ってすぐに始められるPython #nds45LT: 今日帰ってすぐに始められるPython #nds45
LT: 今日帰ってすぐに始められるPython #nds45
 
DATUM STUDIO PyCon2016 Turorial
DATUM STUDIO PyCon2016 TurorialDATUM STUDIO PyCon2016 Turorial
DATUM STUDIO PyCon2016 Turorial
 
2023_freshman
2023_freshman2023_freshman
2023_freshman
 
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版
 
これからの「言語」の話をしよう ―― 未来を生きるためのツール
これからの「言語」の話をしよう ―― 未来を生きるためのツールこれからの「言語」の話をしよう ―― 未来を生きるためのツール
これからの「言語」の話をしよう ―― 未来を生きるためのツール
 
cs-10. Python の基礎(オブジェクト,メソッド,引数,文字列)
cs-10. Python の基礎(オブジェクト,メソッド,引数,文字列) cs-10. Python の基礎(オブジェクト,メソッド,引数,文字列)
cs-10. Python の基礎(オブジェクト,メソッド,引数,文字列)
 
Introduction Pycon2010
Introduction Pycon2010Introduction Pycon2010
Introduction Pycon2010
 
Python Kyoto study
Python Kyoto studyPython Kyoto study
Python Kyoto study
 
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情
 
PyPy 紹介
PyPy 紹介PyPy 紹介
PyPy 紹介
 
Introduction to Chainer (LL Ring Recursive)
Introduction to Chainer (LL Ring Recursive)Introduction to Chainer (LL Ring Recursive)
Introduction to Chainer (LL Ring Recursive)
 
私の好きなPython構文 vol.2 #nds46
私の好きなPython構文 vol.2 #nds46私の好きなPython構文 vol.2 #nds46
私の好きなPython構文 vol.2 #nds46
 
Python界隈の翻訳プロジェクト
Python界隈の翻訳プロジェクトPython界隈の翻訳プロジェクト
Python界隈の翻訳プロジェクト
 
cs-11. Python の条件分岐と繰り返し,ステップ実行
cs-11. Python の条件分岐と繰り返し,ステップ実行cs-11. Python の条件分岐と繰り返し,ステップ実行
cs-11. Python の条件分岐と繰り返し,ステップ実行
 
Hello World Python featuring GAE
Hello World Python featuring GAEHello World Python featuring GAE
Hello World Python featuring GAE
 
Python基礎その1
Python基礎その1Python基礎その1
Python基礎その1
 
po-6. 繰り返し実行(ループ),ステップ実行
po-6. 繰り返し実行(ループ),ステップ実行po-6. 繰り返し実行(ループ),ステップ実行
po-6. 繰り返し実行(ループ),ステップ実行
 

Django_Fukuoka

Notes de l'éditeur

  1. サーバーからの応答は常にHTMLページでした。
  2. HTTP/1.1の改善やアップデートは1999年6月にRFC2616でリリースされました。