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