ここのことはなかったことにするかもしれない

仕事がらみの記事を主として扱いますが、あくまで個人ブログです。2013年以前の記事は https://yellow-73.hatenablog.com/ にあります。

Djangoに挑戦中 #1

URL

インストール

FreeBSDのパッケージからインストール。py37-djangoだとDjango 1系ですので、py37-django30とします。

pkg install py37-django30

プロジェクト作成からリモートのブラウザで見るまで

プロジェクトで一つのサーバみたいです。その下にアプリケーションがぶら下がります。

django-admin startproject (プロジェクト名) [(フォルダ名)]

または

./manage.py startproject (プロジェクト名) [(フォルダ名)]

フォルダなど

この時、(フォルダ名)の下にアプリが付きます。

初期状態では、(プロジェクト名)というアプリができあがります。たぶん、プロジェクト全体を統括するアプリで、 サーバのルートディレクトリに該当します。

プロジェクトの設定

(プロジェクト名)/settings.py

ALLOWED_HOSTS = ["foo.bar.example"]

LANGUAGE_CODE = 'ja-JP'
TIME_ZONE = 'Asia/Tokyo'

ALLOWED_HOSTSで指定したホスト名でアクセスしないと、サーバは応じてくれません。FQDNで書いてIPアドレス指定するとダメです。

マイグレート

まだよくわかっていません。

./manage.py migrate

とりあえず起動

./manage.py runserver (IPアドレス):(ポート)

デフォルトは、127.0.0.1:8000 です。

管理者を置く

./manage.py createsuperuser

http://(ホスト名)/admin にアクセスすると見えます。

表示だけアプリを作る

django-admin startapp (アプリケーション名)

または

./manage.py startapp (アプリケーション名)

urls設定

(プロジェクト名)/urls.py

"/(アプリ名)/.*"の設定は(アプリ名).urls = (アプリ名)/urls.pyに回す設定にします。

from django.conf.urls import url, include

urlpatterns = [
    url(r'^(アプリ名)/', include('(アプリ名).urls')),
...
]

(アプリ名)/urls.py (新規)

from django.conf.urls import url
from . import views

# urlのP1が''なら、後ろは何でもマッチする
# '^$'で本当の空っぽでないといけない
urlpatterns = [
    url('^$', views.index, name='index'),
]

(アプリ名)/views.py でHTMLを表示

from django.http import HttpResponse

def index(request):
    return HttpResponse('<h1>Hello!</h1>')

アクセス

http://(ホスト名)/(アプリ名)/ でアクセスできます。

テンプレート/静的ファイルを使ってみる

さきほどのは HttpResponse()を使ってHTMLをviews.pyから流し込んでいました。テンプレートや静的ファイルを使っていきます。

上述の参考サイトの https://python.keicode.com/django/how-to-serve-static-files.php を参考にしました。

テンプレートを使う

(アプリ名)/templates/(アプリ名)/index.html を例えば次のようにします。

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>myapp2</title>
{% load static %}
<script src="{% static "myapp2/js/index.js" %}"></script>
<meta viewport="width=device-width,initial-scale=1">
<body>
<h1>myapp2</h1>
</body>
</html>

(アプリ名)/views.py を次のようにします。

from django.shortcuts import render

def index(request):
    contexts = {}
    return render(request,'(アプリ名)/index.html',contexts)

これで http://(ホスト名):(ポート)/(アプリ名)/ からindex.htmlが見れます。

静的ファイルを使う

続いて、(アプリ名)/static/(アプリ名)/js/index.js を次のようにします。

window.onload = function() {
  alert("hello");
}

これで http://(ホスト名):(ポート)/static/(アプリ名)/js/index.js からindex.jsが見れます。