Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.
熱血!!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/...
What Python ??
数値演算
What Python ??
機械学習
Pythonには機械学習のためにデータ
を処理するライブラリ(数値演算をす
るためのライブラリや図を作成するた
めのライブラリなど……)がそろって
いて、呼び出したり組み合わせて処
理したり……といったこ...
What Python ??
機械学習
What Python ??
セキュリティ
Pythonは情報セキュリティの世界では
他よりも先んじているプログラミング言
語です。Pythonを使ったrawソケットや
Scapyライブラリなどネットワーク関連の
パッケージやCOMをPytho...
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 : バッ...
Python introduction
エスケープシーケンス(オマケ)
n : 改行(LF)
r : 復帰(CR)
t : タブ(TAB)
v : 垂直タブ(VT)
nnn : 8進表記文字(nは0~7)
xnn : 16進表記文字(nは0~f...
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'
exce...
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 の時のみ動作し、式を評価して偽であれば、
Assertion...
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...
What is Web Application Framework
• 動的な ウェブサイト、Webアプリケーション、Webサービ
スの開発をサポートするために設計されたアプリケーショ
ンフレームワークである。
• フレームワークの目的は、We...
Django introduction
What is Django
•Django は Python で書かれたオープンソース
のWebフレームワーク。Webアプリケーショ
ン開発に共通するメカニズムを提供し、DRY
(Don't Repeat Yourself) の法則に沿った開...
リクエスト処理に関するフロー図
URLディスパッチャ ビュー モデル
テンプレート
システム
キャッシュシステム
管理
インターフェース
プロジェクト設定
ファイル
プロジェクト管理用
スクリプト
Django管理用
スクリプト
アプリケーショ...
リクエスト処理に関すること
1. クライアント(C)からのHTTPリクエストは
Djangoのリクエストとして扱われます。
2. リクエストされたURLに対応するビューを、
URLディスパッチャによって検索して呼び出
します。
3. 呼び出され...
$休憩
アプリの解説をしていきま
す。
アプリ生成の流れ!!!
1. プロジェクトの作成
2. アプリケーションの作成
3. adminユーザーの作成
4. モデルの作成
5. URLディスパッチャの作成
6. Viewの作成
7. テンプレートの作成
8. 課題
https://github.com/nwiizo/Django_Fukuoka
参照すると今から作るアプリに関する情報
が載っていますのでそちらを参照してくだ
さい
プロジェクト
• Djangoインスタンスの全設定を持ったPythonパッケージです。
• 1つのWebページを1つのプロジェクトとして作る場合がほと
んどです。
• プロジェクト内には、プロジェクト固有のアプリケーションを
新規に作成して配置...
プロジェクトの作成
環境構築
$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'),
}
}
プロジェク...
$ 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さえ通っていればど
こにファイルを配置してもよいです。
• プロジェクトやほかのアプリケーションとの依...
$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
ここを参照してください
モデルの作成
ブログモデルの...
モデル
• DjangoはO/Rマッパー(Object-Relation mapper)を提供しているた
め、Pythonコードでデータベースレイアウトを記述できます。
• 各モデルはdjango.db.modelsModelクラスを継承したク...
リクエスト処理に関するフロー図
URLディスパッチャ ビュー モデル
テンプレート
システム
キャッシュシステム
管理
インターフェース
プロジェクト設定
ファイル
プロジェクト管理用
スクリプト
Django管理用
スクリプト
アプリケーショ...
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 - 制限無しの...
アクションの定義
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の関数の
マ...
リクエスト処理に関するフロー図
URLディスパッチャ ビュー モデル
テンプレート
システム
キャッシュシステム
管理
インターフェース
プロジェクト設定
ファイル
プロジェクト管理用
スクリプト
Django管理用
スクリプト
アプリケーショ...
URLに関すること
DjangoではURL_conf(URL設定)と呼ばれるものを使い
ます。
URLに関すること
・書き方
from django.conf.urls import include, url
urlpatterns = [
url(r‘URL名/’, include(呼び出したいモジュール)),
]
mysite/url...
URLに関すること
from django.conf.urls import include, url
from django.contrib import admin
urlpatterns = [
url(r'^admin/', inclu...
URLに関すること
from django.conf.urls import include, url
from . import views
urlpatterns = [
url(r'^$', views.post_list),
]
blo...
URLに関すること
127.0.0.1:8000にアクセス・・・。
blog/urls.py ファイル
URLに関すること
views.post_listがないのでアクセスできないよぉ・・・。
blog/urls.py ファイル
ビュー
• ビューは要求されたページのHttpResponseオブジェクトな
どのHTTPレスポンスを返す関数です。
• リクエストパラメータからデータを取得し、テンプレートを読
み込み、取得データを使ってテンプレートをレンダリングして
返す。...
リクエスト処理に関するフロー図
URLディスパッチャ ビュー モデル
テンプレート
システム
キャッシュシステム
管理
インターフェース
プロジェクト設定
ファイル
プロジェクト管理用
スクリプト
Django管理用
スクリプト
アプリケーショ...
viewsに関すること
from django.shortcuts import render
# Create your views here.
def post_list(request):
return render(request, '...
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(...
$休憩
テンプレートシステム
• Djangoのテンプレートシステムは表示を担うものであってロ
ジックを記述する場所ではありません。
• デザインとコンテンツ、コードを分離する、パワフルで拡張性
が非常に高いです。
• XMLベースではなくテキストベー...
リクエスト処理に関するフロー図
URLディスパッチャ ビュー モデル
テンプレート
システム
キャッシュシステム
管理
インターフェース
プロジェクト設定
ファイル
プロジェクト管理用
スクリプト
Django管理用
スクリプト
アプリケーショ...
テンプレートに関すること
<div>
<h1><a href="/">Django Fukuoka Blog</a></h1>
</div>
{% for post in posts %}
<div>
<p>published: {{ post...
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
ht...
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>)にスタイルを適用しますとい...
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="styles...
$休憩
テンプレートの拡張
ウェブサイトを作る時、どのページでも同じHTMLタグを使うことがありますよ
ね。たとえば、ヘッダーやフッター部分は、どのページでも同じものを使いま
す。そういう時に、全てのHTMLファイルに対して、同じ作業を繰り返さなくて
...
テンプレートの拡張
base.html に block を記述しました。そうすると、別のテンプレートの内
容を、この block の部分に挿入することが出来るようになります。これ
が、テンプレートの拡張です。
{% block content ...
テンプレートの拡張
post_list.htmlで記載しています。
{% block content %}
{% for post in posts %}
<div class="post">
<div class="date">
{{ pos...
テンプレートの拡張
extendsで読み込みをしています。
{% extends 'blog/base.html' %}
テンプレートの拡張
extendsで読み込みをしています。
{% extends 'blog/base.html' %}
課題()
ブログ記事の追加と編集をウェブサイト
上で出来るようにしましょう
最後に。
• PythonとRubyの表現力はあまり変わらないので
Railsでも同じ開発コストで同じようなものができる。
• 1.10になってバグでハマることもなくなった。
• 就職で東京に行くので時期的にも福岡で最後の勉
強会なのでみんなに...
Prochain SlideShare
Chargement dans…5
×

sur

Django_Fukuoka Slide 1 Django_Fukuoka Slide 2 Django_Fukuoka Slide 3 Django_Fukuoka Slide 4 Django_Fukuoka Slide 5 Django_Fukuoka Slide 6 Django_Fukuoka Slide 7 Django_Fukuoka Slide 8 Django_Fukuoka Slide 9 Django_Fukuoka Slide 10 Django_Fukuoka Slide 11 Django_Fukuoka Slide 12 Django_Fukuoka Slide 13 Django_Fukuoka Slide 14 Django_Fukuoka Slide 15 Django_Fukuoka Slide 16 Django_Fukuoka Slide 17 Django_Fukuoka Slide 18 Django_Fukuoka Slide 19 Django_Fukuoka Slide 20 Django_Fukuoka Slide 21 Django_Fukuoka Slide 22 Django_Fukuoka Slide 23 Django_Fukuoka Slide 24 Django_Fukuoka Slide 25 Django_Fukuoka Slide 26 Django_Fukuoka Slide 27 Django_Fukuoka Slide 28 Django_Fukuoka Slide 29 Django_Fukuoka Slide 30 Django_Fukuoka Slide 31 Django_Fukuoka Slide 32 Django_Fukuoka Slide 33 Django_Fukuoka Slide 34 Django_Fukuoka Slide 35 Django_Fukuoka Slide 36 Django_Fukuoka Slide 37 Django_Fukuoka Slide 38 Django_Fukuoka Slide 39 Django_Fukuoka Slide 40 Django_Fukuoka Slide 41 Django_Fukuoka Slide 42 Django_Fukuoka Slide 43 Django_Fukuoka Slide 44 Django_Fukuoka Slide 45 Django_Fukuoka Slide 46 Django_Fukuoka Slide 47 Django_Fukuoka Slide 48 Django_Fukuoka Slide 49 Django_Fukuoka Slide 50 Django_Fukuoka Slide 51 Django_Fukuoka Slide 52 Django_Fukuoka Slide 53 Django_Fukuoka Slide 54 Django_Fukuoka Slide 55 Django_Fukuoka Slide 56 Django_Fukuoka Slide 57 Django_Fukuoka Slide 58 Django_Fukuoka Slide 59 Django_Fukuoka Slide 60 Django_Fukuoka Slide 61 Django_Fukuoka Slide 62 Django_Fukuoka Slide 63 Django_Fukuoka Slide 64 Django_Fukuoka Slide 65 Django_Fukuoka Slide 66 Django_Fukuoka Slide 67 Django_Fukuoka Slide 68 Django_Fukuoka Slide 69 Django_Fukuoka Slide 70 Django_Fukuoka Slide 71 Django_Fukuoka Slide 72 Django_Fukuoka Slide 73 Django_Fukuoka Slide 74 Django_Fukuoka Slide 75 Django_Fukuoka Slide 76 Django_Fukuoka Slide 77 Django_Fukuoka Slide 78 Django_Fukuoka Slide 79 Django_Fukuoka Slide 80 Django_Fukuoka Slide 81 Django_Fukuoka Slide 82 Django_Fukuoka Slide 83 Django_Fukuoka Slide 84 Django_Fukuoka Slide 85 Django_Fukuoka Slide 86 Django_Fukuoka Slide 87 Django_Fukuoka Slide 88 Django_Fukuoka Slide 89 Django_Fukuoka Slide 90 Django_Fukuoka Slide 91 Django_Fukuoka Slide 92 Django_Fukuoka Slide 93 Django_Fukuoka Slide 94 Django_Fukuoka Slide 95 Django_Fukuoka Slide 96 Django_Fukuoka Slide 97 Django_Fukuoka Slide 98 Django_Fukuoka Slide 99 Django_Fukuoka Slide 100 Django_Fukuoka Slide 101 Django_Fukuoka Slide 102 Django_Fukuoka Slide 103 Django_Fukuoka Slide 104 Django_Fukuoka Slide 105 Django_Fukuoka Slide 106 Django_Fukuoka Slide 107 Django_Fukuoka Slide 108 Django_Fukuoka Slide 109 Django_Fukuoka Slide 110 Django_Fukuoka Slide 111 Django_Fukuoka Slide 112 Django_Fukuoka Slide 113 Django_Fukuoka Slide 114 Django_Fukuoka Slide 115 Django_Fukuoka Slide 116 Django_Fukuoka Slide 117 Django_Fukuoka Slide 118 Django_Fukuoka Slide 119 Django_Fukuoka Slide 120 Django_Fukuoka Slide 121 Django_Fukuoka Slide 122 Django_Fukuoka Slide 123 Django_Fukuoka Slide 124 Django_Fukuoka Slide 125 Django_Fukuoka Slide 126 Django_Fukuoka Slide 127 Django_Fukuoka Slide 128 Django_Fukuoka Slide 129 Django_Fukuoka Slide 130 Django_Fukuoka Slide 131 Django_Fukuoka Slide 132 Django_Fukuoka Slide 133 Django_Fukuoka Slide 134 Django_Fukuoka Slide 135 Django_Fukuoka Slide 136 Django_Fukuoka Slide 137 Django_Fukuoka Slide 138 Django_Fukuoka Slide 139 Django_Fukuoka Slide 140 Django_Fukuoka Slide 141 Django_Fukuoka Slide 142 Django_Fukuoka Slide 143 Django_Fukuoka Slide 144 Django_Fukuoka Slide 145 Django_Fukuoka Slide 146 Django_Fukuoka Slide 147 Django_Fukuoka Slide 148 Django_Fukuoka Slide 149 Django_Fukuoka Slide 150 Django_Fukuoka Slide 151 Django_Fukuoka Slide 152
Prochain SlideShare
機械学習チュートリアル@Jubatus Casual Talks
Suivant
Télécharger pour lire hors ligne et voir en mode plein écran

2 j’aime

Partager

Télécharger pour lire hors ligne

Django_Fukuoka

Télécharger pour lire hors ligne

Django Fukuoka資料

Django_Fukuoka

  1. 1. 熱血!!Django_Fukuoka!! @さくらクラブ Shuya Motouchi @nwiizo
  2. 2. あじぇん だ! 自己紹介 Pythonについて HTTPについて お昼休憩 Djangoについて 反省会
  3. 3. Who I am !!! Shuya Motouchi 21 age Network infrastructure python C++ Haskell
  4. 4. What Python ??
  5. 5. What Python ?? •Pythonはさまざまな分野のアプリケーションで 使われている、極めてパワフルでオープンソー スな動的プログラミング言語です。 •記述が簡単で可読性が高い •データ解析や数値計算にも強い!!!
  6. 6. What Python ?? •Pythonはさまざまな分野のアプリケーションで 使われている、極めてパワフルなオープンソー スな動的プログラミング言語です。 •記述が簡単で可読性が高い •データ解析や数値計算にも強い!!! 福岡では普及率が最悪
  7. 7. What Python ?? 機械学習 数値演算 セキュリティ Webプログラミング
  8. 8. What Python ?? 数値演算 データの 取得 データの 加工 データの 出力
  9. 9. 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/
  10. 10. What Python ?? 数値演算
  11. 11. What Python ?? 機械学習 Pythonには機械学習のためにデータ を処理するライブラリ(数値演算をす るためのライブラリや図を作成するた めのライブラリなど……)がそろって いて、呼び出したり組み合わせて処 理したり……といったことがしやすい ため、 多くの人が機械学習で使っています。
  12. 12. What Python ?? 機械学習
  13. 13. What Python ?? セキュリティ Pythonは情報セキュリティの世界では 他よりも先んじているプログラミング言 語です。Pythonを使ったrawソケットや Scapyライブラリなどネットワーク関連の パッケージやCOMをPythonから扱えて Volatilityフレームワークなどシステム関 連のトピックも扱えます。
  14. 14. What Python ?? セキュリティ
  15. 15. What Python ?? Webプログラミング HTTPBasicServerなどがあり非常に 簡単にWebプログラミングができる。 WebフレームワークにはFlaskや Djangoなどがある。
  16. 16. What Python ?? Webプログラミング
  17. 17. Python introduction
  18. 18. Python introduction •前回の勉強会(課題) https://github.com/nwiizo/IntroducingQuiz
  19. 19. Python introduction インタープリタを起動しましょう $python3 もしくは $ipython3
  20. 20. Python introduction Hello World print(“Hello World”) #は コメントアウト
  21. 21. Python introduction 変数 データ型を明記することがない動的言語
  22. 22. Python introduction 変数 データ型を明記することがない動的言語 C言語 Python int a; a = 1; a = 1
  23. 23. Python introduction 変数 変数名 = 値 で値を代入することができる。 >>var1 = 1 >>var1 = var + 1 >>print(var1) 2
  24. 24. Python introduction エスケープシーケンス(オマケ) 改行 : バックスラッシュと改行が無視される : バックスラッシュ() ' : シングルクォート(') " : ダブルクォート(") a : ベル(BEL) b : バックスペース(BS) f : フォームフィード(FF)
  25. 25. 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}")
  26. 26. Python introduction •四則演算 a = 1 + 1 # 2 s = 3 – 1 # 2 m = 3 * 2 # 6 d = 6 / 3 # 2.0
  27. 27. Python introduction •インデント C/C++やPHP では文を { ... } で囲むことでブロック(複文)を 構成しますが、Python ではインデント(行頭の空白文字の 数)が重要な意味を持ち、同じ数の空白でインデントされた 文がブロックとみなされます。
  28. 28. Python introduction •インデント a = 3 if a == 5: print "AAA" # if文の対象 print "BBB" # if文の対象 print "CCC" # if文の対象ではない
  29. 29. Python introduction •エンコードルール • 日本語など、ASCII以外の文字を含むスクリプトを作成す る場合は、スクリプトの1行目、または2行目に、下記の形 式でスクリプトの エンコードルール(coding:) を指定してく ださい。
  30. 30. Python introduction •エンコードルール # -*- coding: utf-8 -*-
  31. 31. Python introduction •リスト 10 20 30 40a 0 321 -4 -1-2-3
  32. 32. Python introduction •リスト 10 20 30 40a a[開始:終了:繰り返し]
  33. 33. Python introduction •リスト a = [10, 20, 30, 40] a[0] # 10 a[1] # 20
  34. 34. Python introduction •リスト a = [10, 20, 30, 40] a[0:2] # [10,20,30] a[0:-1] # [10,20,30] a[0::2] #[10,30]
  35. 35. Python introduction •制御構文 もし~ならば(if,else,elif)
  36. 36. Python introduction •制御構文 if expression: suite... [elif expr: suite...] [else: suite...]
  37. 37. Python introduction •制御構文 if num > 10: print “大きい" elif num == 10: print “等価" else: print “小さい"
  38. 38. Python introduction •制御構文 ~のあいだ(while, else)
  39. 39. Python introduction •制御構文 while expression: suite... [else: suite...]
  40. 40. Python introduction •制御構文 n = 0 while n < 10: print n n += 1 else: print 'END'
  41. 41. Python introduction •制御構文 ~のあいだ(for, in)
  42. 42. Python introduction •制御構文 for var in expression: suite... [else: suite...]
  43. 43. Python introduction •制御構文 for n in [1, 2, 3]: print n #=> 1, 2, 3
  44. 44. Python introduction •制御構文 for n in range(10): print n
  45. 45. Python introduction •制御構文(課題) FizzBuzz:3の倍数でFizz5の倍数で Buzzsそれ以外の時は数字 を出力してください
  46. 46. $休憩
  47. 47. Python introduction •制御構文(オマケ) ループを抜ける(break)
  48. 48. Python introduction •制御構文(オマケ) for n in range(10): if n == 5: break print n # 0, 1, 2, 3, 4
  49. 49. Python introduction •制御構文(オマケ) ループを繰り返す(continue)
  50. 50. Python introduction •制御構文(オマケ) for n in range(10): if n == 5: continue print n
  51. 51. Python introduction •制御構文(オマケ) 例外処理(try, except, else, finally, raise)
  52. 52. Python introduction •制御構文(オマケ) try: suite... [except [expression]: suite...] [else: suite...] [finally: suite...]
  53. 53. 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'
  54. 54. Python introduction •制御構文(オマケ) with構文(with)
  55. 55. Python introduction •制御構文(オマケ) with expression [as target] [, expression [as target]]... : suite...
  56. 56. Python introduction •制御構文(オマケ) f = open("test.txt") print f.read() f.close() with open("test.txt") as f: print f.read()
  57. 57. Python introduction •制御構文(オマケ) アサーション文(assert)
  58. 58. Python introduction •制御構文(オマケ) assert はテストの際に値が期待通りに設定されてい るかを確認するための仕組みです。__debug__ が True の時のみ動作し、式を評価して偽であれば、 AssertionError例外を発生させます。python を -O オ プション付きで起動することで、__debug__ の値は False になります。
  59. 59. Python introduction •制御構文(オマケ) パス文(pass)
  60. 60. Python introduction •制御構文(オマケ) pass は何もしない文です。中身の無い関 数やクラスを作成する際に使用されます。
  61. 61. $休憩
  62. 62. Python introduction •関数 def 文を用いて関数(function)を定義す ることができます。
  63. 63. Python introduction •関数 def add(x, y): print x + y add(3,10) #=>13
  64. 64. Python introduction •関数(課題) ズンドコキヨシ関数を作って!!!
  65. 65. お昼休憩…。 • 質問もしてください!!! • ごはん行く人は一緒に行きましょう!!!
  66. 66. What is Hypertext Transfer Protocol WebブラウザとWebサーバの間でHTMLな どのコンテンツの送受信に用いられる通 信プロトコルである。ハイパーテキスト 転送プロトコルとも呼ばれる。
  67. 67. What is Hypertext Transfer Protocol WebブラウザとWebサーバの間でHTMLな どのコンテンツの送受信に用いられる通 信プロトコルである。ハイパーテキスト 転送プロトコルとも呼ばれる。 HTTPです。
  68. 68. 最初のバージョン • The response from the server was always an HTML page.
  69. 69. What is Hypertext Transfer Protocol 現在のHTTPリクエスト
  70. 70. HTTP/1.1 • WiresharkでHTTP1.1の中身を見るとこんな感じ
  71. 71. What is Hypertext Transfer Protocol Webアプリケーション 1.Webブラウザを通してユーザが サーバーにリクエストを送る 2.Webアプリケーションは受け取った リクエストに対応した結果を返す。 3.Webアプリケーションで処理した 結果をWebブラウザに返す
  72. 72. What is Web Application Framework • 動的な ウェブサイト、Webアプリケーション、Webサービ スの開発をサポートするために設計されたアプリケーショ ンフレームワークである。 • フレームワークの目的は、Web開発で用いられる共通した 作業に伴う労力を軽減することである。 • たとえば、多数のフレームワークがデータベースへのアク セスのためのライブラリや、テンプレートエンジン、セッ ション管理を提供し、コードの再利用を促進させるものも ある。 その他のフレームワーク:Flask,Pyramid,Bottle,Tornado Ruby on
  73. 73. Django introduction
  74. 74. What is Django •Django は Python で書かれたオープンソース のWebフレームワーク。Webアプリケーショ ン開発に共通するメカニズムを提供し、DRY (Don't Repeat Yourself) の法則に沿った開発を、 より簡単に、より迅速に実現します。
  75. 75. リクエスト処理に関するフロー図 URLディスパッチャ ビュー モデル テンプレート システム キャッシュシステム 管理 インターフェース プロジェクト設定 ファイル プロジェクト管理用 スクリプト Django管理用 スクリプト アプリケーション C キャッシュ RDB プロジェクト
  76. 76. リクエスト処理に関すること 1. クライアント(C)からのHTTPリクエストは Djangoのリクエストとして扱われます。 2. リクエストされたURLに対応するビューを、 URLディスパッチャによって検索して呼び出 します。 3. 呼び出されたビューにおいて、必要ならばモ デルやテンプレートを用いてレスポンスオブ ジェクトを生成します。 4. レスポンスオブジェクトはHTTPレスポンスと してクライアントに送り返されます。
  77. 77. $休憩
  78. 78. アプリの解説をしていきま す。
  79. 79. アプリ生成の流れ!!! 1. プロジェクトの作成 2. アプリケーションの作成 3. adminユーザーの作成 4. モデルの作成 5. URLディスパッチャの作成 6. Viewの作成 7. テンプレートの作成 8. 課題
  80. 80. https://github.com/nwiizo/Django_Fukuoka 参照すると今から作るアプリに関する情報 が載っていますのでそちらを参照してくだ さい
  81. 81. プロジェクト • Djangoインスタンスの全設定を持ったPythonパッケージです。 • 1つのWebページを1つのプロジェクトとして作る場合がほと んどです。 • プロジェクト内には、プロジェクト固有のアプリケーションを 新規に作成して配置したり、Webサイトごとの設定(データベー ス設定、Djangoのオプション設定、アプリケーション毎の設定 など)を持ちます。 $django-admin startproject 【プロジェクト名】 • このコマンドでプロジェクトディレクトリと初期設定ファイルが生成 されます。
  82. 82. プロジェクトの作成 環境構築 $python3 -m venv myvenv $source myvenv/bin/activate $pip install django==1.8
  83. 83. プロジェクトの作成 環境構築(トラブルシューティング) $sudo apt-get install python-virtualenv $virtualenv --python=python3.4 myvenv
  84. 84. プロジェクトの作成 プロジェクトの作成 $ django-admin startproject mysite .
  85. 85. プロジェクトの作成 プロジェクトの作成 ├───manage.py └───mysite settings.py urls.py wsgi.py __init__.py
  86. 86. TIME_ZONE = 'Asia/Tokyo' USE_TZ = False プロジェクトの作成 mysite/settings.py タイムゾーンの設定
  87. 87. DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), } } プロジェクトの作成 mysite/settings.py データベースの設定
  88. 88. $ python3 manage.py migrate プロジェクトの作成 データベースの作成
  89. 89. $python manage.py runserver プロジェクトの作成 サーバーを動かそう!!
  90. 90. http://127.0.0.1:8000/ にアクセス プロジェクトの作成 確認
  91. 91. プロパティとアクションの塊 プロジェクトの作成 オブジェクト is なに??
  92. 92. 状態(プロパティ)と命令(アクション)の塊 プロジェクトの作成 オブジェクト is なに??
  93. 93. プロジェクトの作成 猿をモデルにしたいときには
  94. 94. 猿【monkey】オブジェクトを作ります。 プロジェクトの作成 猿をモデルにしたいときには
  95. 95. monkey ============ 年齢 age 性別 sex 種族 type 機嫌 mood どこのグループに所属か w_group プロジェクトの作成 猿をモデルにしたいときには(プロパティ)
  96. 96. monkey ============ 木に登る Climb_a_tree() 引っ掻く scratch() 喧嘩をする fight() 食べる feed(food) プロジェクトの作成 猿をモデルにしたいときには(アクション)
  97. 97. プロジェクトの作成 作りたいものは猿か??
  98. 98. モデルの作成 ブログのページとしてほしいもの
  99. 99. タイトル 本文 誰が書いたか 作った日時 公開情報 モデルの作成 ブログのページとしてほしいもの
  100. 100. Post ----------------------------------- title text author created_date published_date モデルの作成 ブログのページとしてほしいもの
  101. 101. アプリケーション • 単機能のWebアプリケーションを表すPythonパッケージになり ます。 • 中身としてはただのパッケージなのでPATHさえ通っていればど こにファイルを配置してもよいです。 • プロジェクトやほかのアプリケーションとの依存をなるべく減 らして、機能を分離させておけば、別のプロジェクトに再利用 できます。 $python3 manage.py startapp 【アプリケーション名】 • このコマンドでアプリを生成することができます。
  102. 102. $python manage.py startapp blog アプリケーションの作成 アプリケーションの開始
  103. 103. blog migrations __init__.py __init__.py admin.py models.py tests.py views.py アプリケーションの作成 ディレクトリの確認
  104. 104. INSTALLED_APPS = ( ~~~~~~~~~~~~~~~~~~~~~ ‘blog’, #ブログ項目の追加 ) モデルの作成 プロジェクト側への通知(mysite/settings.py)
  105. 105. https://github.com/nwiizo/Django_Fukuoka/blob/master/dj ango_stady/mysite/mysite/blog/models.py ここを参照してください モデルの作成 ブログモデルの作成(blog/models.py)
  106. 106. モデル • DjangoはO/Rマッパー(Object-Relation mapper)を提供しているた め、Pythonコードでデータベースレイアウトを記述できます。 • 各モデルはdjango.db.modelsModelクラスを継承したクラスで データベースの1テーブルに対応します。データベースの フィールドやリレーション、振る舞いをモデルクラスの属性や メゾットとして定義することでデータベースへのアクセスAPIを 使えます。
  107. 107. リクエスト処理に関するフロー図 URLディスパッチャ ビュー モデル テンプレート システム キャッシュシステム 管理 インターフェース プロジェクト設定 ファイル プロジェクト管理用 スクリプト Django管理用 スクリプト アプリケーション C キャッシュ RDB プロジェクト
  108. 108. fromとかimportで始まる行は他のファイルから再利用を するために追加する行です。 モデルの作成 ブログモデルの作成(blog/models.py)
  109. 109. class Post(models.Model):モデルを定義します。 • classはオブジェクトを定義します。 • Postはモデルの名前です。 • models.ModelはポストがDjango Modelだという意味で、 Djangoが、これはデータベースに保存すべきものだ と分かるようにしています。 モデルの作成
  110. 110. プロパティ(状態)の定義 title text、created_date published_date author • models.CharField - テキスト数を定義するフィールド • models.TextField - 制限無しの長いテキスト用 • models.DateTimeField - 日付と時間のフィールド • models.ForeignKey - これは他のモデルへのリンク モデルの作成
  111. 111. アクションの定義 def publish(self): self.published_date = timezone.now() self.save() これは、ブログを公開するメソッドです。 モデルの作成
  112. 112. $python3 manage.py makemigrations blog モデルの作成 作成は完了したのでモデル用のテーブルを作成しま す。
  113. 113. from django.contrib import admin from .models import Post admin.site.register(Post) モデルの作成 ログインページの作成!!! blog/admin.py
  114. 114. Postモデルをimportしています。モデルをadminページ で見れるようにするには、モデルを admin.site.register(Post)で登録する必要があります。 モデルの作成 ログインページの作成!!! blog/admin.py
  115. 115. $python3 manage.py createsuperuser モデルの作成 ユーザーの作成!!!
  116. 116. $休憩
  117. 117. URLディスパッチャ • URLディスパッチャ機構はフレームワークに依存した制約、拡 張士の制限がなくなり黒魔術を使わずにURL設計を保てるよう な仕組みを提供します。 • URLは、正規表現で書かれたURLのパターンとPythonの関数の マッピングを定義したURLconfモジュールに記述します。 • URLconfはアプリケーションごとに分割できるため、アプリケー ションの再利用性を高めることができます。 • URLに名前を付けて定義することでコードやテンプレートから はその名前でURLを参照できるようになり、URL設計をコードか ら分離できます。
  118. 118. リクエスト処理に関するフロー図 URLディスパッチャ ビュー モデル テンプレート システム キャッシュシステム 管理 インターフェース プロジェクト設定 ファイル プロジェクト管理用 スクリプト Django管理用 スクリプト アプリケーション C キャッシュ RDB プロジェクト
  119. 119. URLに関すること DjangoではURL_conf(URL設定)と呼ばれるものを使い ます。
  120. 120. URLに関すること ・書き方 from django.conf.urls import include, url urlpatterns = [ url(r‘URL名/’, include(呼び出したいモジュール)), ] mysite/urls.py ファイル
  121. 121. 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 ファイル
  122. 122. URLに関すること from django.conf.urls import include, url from . import views urlpatterns = [ url(r'^$', views.post_list), ] blog/urls.py ファイル
  123. 123. URLに関すること 127.0.0.1:8000にアクセス・・・。 blog/urls.py ファイル
  124. 124. URLに関すること views.post_listがないのでアクセスできないよぉ・・・。 blog/urls.py ファイル
  125. 125. ビュー • ビューは要求されたページのHttpResponseオブジェクトな どのHTTPレスポンスを返す関数です。 • リクエストパラメータからデータを取得し、テンプレートを読 み込み、取得データを使ってテンプレートをレンダリングして 返す。ような処理が一般的です。
  126. 126. リクエスト処理に関するフロー図 URLディスパッチャ ビュー モデル テンプレート システム キャッシュシステム 管理 インターフェース プロジェクト設定 ファイル プロジェクト管理用 スクリプト Django管理用 スクリプト アプリケーション C キャッシュ RDB プロジェクト
  127. 127. viewsに関すること from django.shortcuts import render # Create your views here. def post_list(request): return render(request, 'blog/post_list.html', {}) blog/views.py ファイル
  128. 128. HTMLに関すること HTML は "HyperText Markup Language"の略です。 HyperTextとは、テキストなどをクリックする と別のページに繋がるハイパーリンクが使え るということです。Markupは、目印をつける という意味です。文章の各部分がどのような 役割を果たしているかブラウザに伝えます。< と >に囲まれたタグによってマークアップされ たものは、要素と呼ばれます。
  129. 129. HTMLに関すること テンプレートは blog/templates/blog ディレクトリに保 存します。 post_list.html ファイルの作成。
  130. 130. クエリセットに関すること ポスト内容を保存する為の Post モデルは、 models.py に定義しました。ポストの一覧を表 示する post_list は views.py にあり、そこにテン プレートも加わりました。
  131. 131. クエリセットに関すること ビュー が モデルとテンプレートの橋渡しを してくれます。私達が作業している post_list ビュー の場合、表示したいデータを取り出し て、テンプレートファイルに渡すことになり ます。基本的に、どのモデルのデータを、ど のテンプレートに表示させるかは、 ビューに 記述します。
  132. 132. クエリセットに関すること from django.shortcuts import render from .models import Post blog/views.py ファイル
  133. 133. クエリセットに関すること 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 ファイル
  134. 134. $休憩
  135. 135. テンプレートシステム • Djangoのテンプレートシステムは表示を担うものであってロ ジックを記述する場所ではありません。 • デザインとコンテンツ、コードを分離する、パワフルで拡張性 が非常に高いです。 • XMLベースではなくテキストベースのテンプレートであるため、 XMLやHTMLに限らず、EメールやJavasScript、CSVなど、どんなテ キストフォーマットにもテンプレートを使えます。 • テンプレート継承を使えばいい感じのUIをいい感じに使えます。
  136. 136. リクエスト処理に関するフロー図 URLディスパッチャ ビュー モデル テンプレート システム キャッシュシステム 管理 インターフェース プロジェクト設定 ファイル プロジェクト管理用 スクリプト Django管理用 スクリプト アプリケーション C キャッシュ RDB プロジェクト
  137. 137. テンプレートに関すること <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 ファイル
  138. 138. cssに関すること Cascading Style Sheets (CSS)とは、HTMLな どのマークアップ言語で書かれたWebサイ トの見た目や書式を記述するための言語 です。
  139. 139. 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
  140. 140. cssに関すること mysite/settings.pyファイルに STATICFILES_DIRS = ( os.path.join(BASE_DIR, "static"), ) を記載する。 manage.pyのディレクトリにstaticファイルを作る。
  141. 141. cssに関すること static css blog.css CSSの下にblog.cssを作成します。
  142. 142. cssに関すること h1 a { color:#FCA205; } h1 a はCSSセレクタです。h1 要素の中にあるa 要素 (例:このようなコードのこと <h1><a href="">link</a></h1>)にスタイルを適用しますという意味になります。この場合、テキス トの色を#FCA205、オレンジ色にする、という意味です。もちろん、あなたの好きな色に変 更してもいいです.
  143. 143. cssに関すること <link rel="stylesheet" href="{% static 'css/blog.css' %}"> これを記述するといいのですがすべてを記述していくのは非常に 面倒ですのでオープンソースのテンプレートを記述していきます。
  144. 144. 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' %}"> これを記述するといいのですがすべてを記述していくのは非常に 面倒ですのでオープンソースのテンプレートを記述していきます。
  145. 145. $休憩
  146. 146. テンプレートの拡張 ウェブサイトを作る時、どのページでも同じHTMLタグを使うことがありますよ ね。たとえば、ヘッダーやフッター部分は、どのページでも同じものを使いま す。そういう時に、全てのHTMLファイルに対して、同じ作業を繰り返さなくて すみます。一箇所だけ変更すれば、その変更は全てのページに適用されま す。 では、やっていきます。 https://github.com/nwiizo/Django_Fukuoka/blob/master/django_stady/mysi te/mysite/blog/templates/blog/base.html を見ていきましょう!!!
  147. 147. テンプレートの拡張 base.html に block を記述しました。そうすると、別のテンプレートの内 容を、この block の部分に挿入することが出来るようになります。これ が、テンプレートの拡張です。 {% block content %} {% endblock %}
  148. 148. テンプレートの拡張 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 %}
  149. 149. テンプレートの拡張 extendsで読み込みをしています。 {% extends 'blog/base.html' %}
  150. 150. テンプレートの拡張 extendsで読み込みをしています。 {% extends 'blog/base.html' %}
  151. 151. 課題() ブログ記事の追加と編集をウェブサイト 上で出来るようにしましょう
  152. 152. 最後に。 • PythonとRubyの表現力はあまり変わらないので Railsでも同じ開発コストで同じようなものができる。 • 1.10になってバグでハマることもなくなった。 • 就職で東京に行くので時期的にも福岡で最後の勉 強会なのでみんなにもっと頑張って盛り上げてほし い
  • williammdavis

    Dec. 1, 2016
  • ssuserde5890

    Nov. 7, 2016

Django Fukuoka資料

Vues

Nombre de vues

436

Sur Slideshare

0

À partir des intégrations

0

Nombre d'intégrations

256

Actions

Téléchargements

2

Partages

0

Commentaires

0

Mentions J'aime

2

×