Djangoを使い始めるためのメモ:pipenv環境の場合

どうも手元のチュートリアルでは、pipで進めようとしていて、
Anacondaで続けると、途中で噛み合わないので、やり直し。

まずは、それ用のディレクトリ作成し、仮想環境を実行する。

mkdir #appディレクトリ名
cd #app名
pipenv install django==2.0.6
pipenv shell

仮想環境が実行されていることを確認し、
次に、djangoプロジェクトの下準備。

django-admin startproject #プロジェクト名 .
python manage.py startapp #apppython manage.py migrate
python manage.py runserver

#プロジェクト名/settings.py に、作ったapp名を登録する。

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'app名', #ここに書き足す。文末のカンマを忘れずに。
]

------

データベースのモデルを設定する。

#app名/models.py
from django.db import models

# Creatte your models here.
class #class(models.Model):
    
    def __#型__(self):
        return self.#名

つくったら、コマンドライン上でmigrateする。

python manage.py makemigrations #apppython manage.py migrate #app

migrateが済んだら、管理者権限のユーザーを生成する。

python manage.py createsuperuser

-------

url遷移ができるように、設定を行う。

#app名内に、urls.py を生成する。
#コマンドライン(windows)からの場合、
type nul > #app名/urls.py

#app名/urls.pyの中身を編集しておく。

from django.urls import path
from . import views

urlpatterns = [
    path('', views.BlogListView.as_view(), name = 'home'),
]

#project名/urls.pyの中身も

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    #増えたら、ココにいろいろ書き足していく。
    #例
    path('', include('blog.urls')),
]

view.pyの中身も編集しておく。

from django.views.generic import ListView
from . models import Post

# Create your views here.
class BlogListView(ListView):
	model = Post
	template_name = 'home.html'

そして、templatesフォルダ内に、.htmlファイルを作る。

mkdir templates
type nul > templates/base.html
type nul > templates/home.html


それが済んだら、
#project名内、settings.pyのtemplates読み込みに、
そのtemplatesフォルダを対象に設定する。

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': ['templates'], #ココのこと。
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
                            ],
        },
    },
]


------

htmlファイルの編集。
とりあえずは、base.htmlと、home.htmlを、

<!-- base.html -->
<!DOCTYPE html>
{% load static %}
<html>
    <head>
        <title>/* タイトル */</title>
        /*↓は、後で使う、css設定 */
        <link rel="stylesheet" href="{% static 'css/base.css' %}">
    </head>

    <body>
        <header>
            <h1><a href="/">/* ヘッダータイトル */</a></h1>
        </header>
    	<div class ="container">
    		{% block content %}
    		{% endblock content %}
    	</div>
    </body>
</html>
<!-- home.html -->

/* これで、base.htmlと紐づく */
{% extends 'base.html' %}

/* こっからが中身 */
{% block content %}
{% endfor %}


/* これで、base.htmlと紐づくやつ、終了のタグ */
{% endblock content %}


------

cssの設定。
まずは、staticディレクトリをつくり、そこのパスを紐付ける。

#プロジェクト名/settings.pyの、最下段"STATIC_URL = '/static/'"の下に書く

STATICFILES_DIR =[os.path.join(BASE_DIR, 'static')]

ローカルはこれで構わないけど、
herokuにデプロイすると、なぜかCSS反映されない。
公式曰く、次のように直すとよいらしい。
https://devcenter.heroku.com/articles/django-assets

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/1.9/howto/static-files/
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
STATIC_URL = '/static/'

# Extra places for collectstatic to find static files.
STATICFILES_DIRS = (
    os.path.join(BASE_DIR, 'static'),
)



そうしたら、staticディレクトリ内に、
css用のフォルダと、ディレクトリを生成。

mkdir static/css
type nul > static/css/base.css


とりあえずは、こんな感じではなかろうか。
あとは、Git設定したり、Herokuの設定をしたり。
でも、まあ、そこまでここで書かなくてよいか。

なにか間違って書いてあるところあれば、ご指摘下さい。

この記事が気に入ったらサポートをしてみませんか?