kb84tkhrのブログ

何を書こうか考え中です あ、あと組織とは関係ないってやつです 個人的なやつ

Djangoチュートリアル(12) 静的ファイル

自動テストについて少し読み物

ResultsView にも同じように get_queryset メソッドを追加して、新しいテストクラスも作らなければならないようです。しかしこれは、今作ったばかりのものとそっくりになるでしょう。実際、テストは重複だらけになるはずです。
...
ある時点で、書いたテストが限界に達しているように見え、テストが膨らみすぎてコードが苦しくなってしまうのではないかという疑問が浮かんでくるでしょう。こうなって場合にはどうすれば良いのでしょうか?

どうすればよいのでしょうか?

構いません。 テストコードが大きくなるのに任せましょう。たいていの場合、あなたはテストを一回書いたら、そのことを忘れて大丈夫です。プログラムを開発し続ける限りずっと、そのテストは便利に機能し続けます。

なるほど

きちんと考えてテストを整理していれば、テストが手に負えなくなることはありません。

きちんと考えることは必要なのね

Django には、Selenium のようなツールとの連携を容易にしてくれる LiveServerTestCase が用意されています。

へー
何をしてくれるんだろう

Testing tools | Django documentation | Django

LiveServerTestCase does basically the same as TransactionTestCase with one extra feature: it launches a live Django server in the background on setup, and shuts it down on teardown.

テスト時にサーバを起動したり止めたりしてくれるんだって
なるほど
自分で起動もできるとは思うけどやってくれたほうが楽だしね

TransactionTestCaseはデータベースの面倒を見てくれるものみたい

次は静的ファイル

django.contrib.staticfiles はまさにそのためにあります。これは静的なファイルを各アプリケーションから (さらに指定した別の場所からも) 一つの場所に集め、運用環境で公開しやすくするものです。

Django の STATICFILES_FINDERS は、さまざまなソースから静的ファイルを検索する方法を知っているファインダのリストです。

こういうのときどき出てくるけど何なんだ環境変数?どっかで定義してる変数?

設定 | Django ドキュメント | Django

STATICFILES_FINDERS
デフォルト値:

[
    'django.contrib.staticfiles.finders.FileSystemFinder',
    'django.contrib.staticfiles.finders.AppDirectoriesFinder',
]

変数みたい
AppDirectoriesFinderってやつがpollsの下から探してくれるやつ
変更したいときは多分settings.pyに書くんだろう

そういえばこのページ、jaだけどほぼ英語だな
まあいいか

ではpolls/staticディレクトリを作成
ってもうあるな
最初からあった気もする

その下にやっぱりpollsディレクトリを作ってstyle.cssを作る

テンプレートと同様に、polls という別のサブディレクトリを作らずに、直接 polls/static の中に静的ファイルを置いてもいいのではないか、と思うかもしれませんね。しかし、それは実際には悪い考えです。

りょ

polls/static/polls/style.css

li a {
    color: green;
}

index.htmlに追加

{% load static %}

<link rel="stylesheet" type="text/css" href="{% static 'polls/style.css' %}>

{% static 'polls/style.css' %}と書くと環境に合わせたURLに変更してくれる
ここでは/static/polls/style.css

{% load static %}は何のために書いてあるんだろう
staticっていう部品使うよってことかな

試してみる

・・・

よく見ると箇条書きの丸が緑か

cssにもアクセスが来てる

[13/Jul/2019 07:36:54] "GET /polls/ HTTP/1.1" 200 179
[13/Jul/2019 07:36:54] "GET /static/polls/style.css HTTP/1.1" 200 24

ページのソースも確認

<link rel="stylesheet" type="text/css" href="/static/polls/style.css">

大丈夫

画像はpolls/static/polls/でさらにimagesディレクトリを作って入れる
cssでURLを書くときは相対で書くように