Django-material로 지금 바람의 사이트 만들기

기사의 소스입니다.
git: ajitama/material_site
거칠지만 git으로 소스 코드를 내 보았습니다.
가능한 한 간단하게 쓰고 있습니다만, 아마추어 레벨이므로 쓸데없는 것에 대해서는 용서해 주세요.

Ubuntu1804LTS
Python3.6.5
장고2.0.7
material_site
├── ajitama
│   ├── __init__.py
│   ├── admin.py
│   ├── apps.py
│   ├── migrations
│   │   ├── 0001_initial.py
│   │   ├── __init__.py
│   ├── models.py
│   ├── tests.py
│   ├── urls.py
│   └── views.py
├── db20.sqlite3
├── manage.py
└── material_site
    ├── __init__.py
    ├── settings.py
    ├── urls.py
    └── wsgi.py

장고 프로젝트 만들기



django-admin startproject material_site

우선 Settings.py를 만나보겠습니다.
흠뻑.

material_site/settings.py

import django #DBの名前を変更するために入れてます(場合によっては不要)

ALLOWED_HOSTS = ['*']
INSTALLED_APPS = [
・・・<省略
    # material apps
    'material',
    'material.frontend',

    # userapp
    'ajitama.apps.AjitamaConfig', #<後で作ります>

・・・<省略
]

TEMPLATES = [
    {
・・・<省略
        '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',
                'material.frontend.context_processors.modules',  # <←追加>
            ],
        },
    },
]


DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db{}{}.sqlite3'.format(*django.VERSION[:2])), # DBの名前の変更。(好みです)
    }
}


AUTH_PASSWORD_VALIDATORS이 삭제되었습니다. (비밀번호 제약 등을 엄격하게 해주는 모듈)

material_site/url.py

from django.contrib import admin
from django.conf.urls import url
from django.urls import path, include
from material.frontend import urls as frontend_urls


urlpatterns = [
    path('admin/', admin.site.urls),
    url(r'', include(frontend_urls)), #追加
    ]

관리 사용자 만들기



먼저 만들 때python3 manage.py createsuperuser
자신은 admin/admin으로 만들었습니다.

첫 번째 Migrate



migrate하지 않으면 앱을 만들 수 없습니다.python3 manage.py migrate
/root/material_site# python3 manage.py migrate
Operations to perform:
  Apply all migrations: admin, auth, contenttypes, frontend, sessions
Running migrations:
  Applying contenttypes.0001_initial... OK
  Applying auth.0001_initial... OK
  Applying admin.0001_initial... OK
  Applying admin.0002_logentry_remove_auto_add... OK
  Applying contenttypes.0002_remove_content_type_name... OK
  Applying auth.0002_alter_permission_name_max_length... OK
  Applying auth.0003_alter_user_email_max_length... OK
  Applying auth.0004_alter_user_username_opts... OK
  Applying auth.0005_alter_user_last_login_null... OK
  Applying auth.0006_require_contenttypes_0002... OK
  Applying auth.0007_alter_validators_add_error_messages... OK
  Applying auth.0008_alter_user_username_max_length... OK
  Applying auth.0009_alter_user_last_name_max_length... OK
  Applying frontend.0001_initial... OK
  Applying frontend.0002_i18n... OK
  Applying sessions.0001_initial... OK

애플리케이션 만들기


python3 manage.py startapp ajitama

애플리케이션 설정



ajitama/apps.py
# -*- coding: utf-8 -*-
from __future__ import unicode_literals

from django.apps import AppConfig
from material.frontend.apps import ModuleMixin


class AjitamaConfig(ModuleMixin, AppConfig):
    name = 'ajitama'
    icon = '<i class="material-icons">extension</i>'


ModuleMixin은 material frontend의 ​​기능으로 URL을 좋은 느낌으로 가져와주는 것만으로 싶습니다.

ajitama/models.py
from django.db import models

SELECT_LABEL=(
    ('OBJ1', '選択肢1'),
    ('OBJ2', '選択肢2'),
    ('OBJ3', '選択肢3'),
        )

# Create your models here.
class Article(models.Model):
    subject = models.CharField(
            "タイトル",
            max_length=90,
    )
    data_str = models.CharField(
            "データ(文字型)",
            max_length=10000,
            null=True,
            )
#<以下、省略>


ajitama/views.py
from material.frontend.views import ModelViewSet
from .import models

# Create your views here.
class ArticleViewSet(ModelViewSet):
    model = models.Article
    ordering = ['-subject', 'data_date']
    list_display = ('subject','data_date', 'data_bool','data_choice')


ajitama/urls.py
from django.urls import path, include
from django.conf.urls import url
from django.views import generic

from . import views

app_name = 'ajitama'

urlpatterns = [
    url('^$', generic.RedirectView.as_view(url='./ajitop'), name="index"),
    path('ajitop', include(views.ArticleViewSet().urls), name="top"),
]


앱 마이그레이션


# python3 manage.py makemigrations
Migrations for 'ajitama':
  ajitama/migrations/0001_initial.py
    - Create model Article
# python3 manage.py migrate
Operations to perform:
  Apply all migrations: admin, ajitama, auth, contenttypes, frontend, sessions
Running migrations:
  Applying ajitama.0001_initial... OK 

실행해보기



장고를 시작합니다.
python3 manage.py runserver 0.0.0.0:8000
브라우저에서 액세스합니다.
htp://127.0.0.1:8000/아지타마



만든 Superuser로 로그인할 수 있는지 시도해 보세요.





장고를 사용하는 사람이 더 가까워지고, 곤란했을 때의 정보가 더 나오기를 바랍니다.

좋은 웹페이지 즐겨찾기