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
が見れます。