장고를 시작하자!튜토리얼 ②~
14048 단어 Django
개요
지난번 계속.
이번 강좌는 아래의 프로젝트를 실시하고 싶습니다.
데이터베이스 설정
데이터베이스 설정은 mysite/settings입니다.py로 진행합니다.# Database
# https://docs.djangoproject.com/en/1.10/ref/settings/#databases
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
위와 같이 DB의 설정 위치입니다.
이번에는 MySQL이라고 가정하고 로컬 환경에서 MySQL의 DB 서버를 시작하여 연결을 시도합니다.
다음과 같이 설정합니다.# Database
# https://docs.djangoproject.com/en/1.10/ref/settings/#databases
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'dbname', # 適当です
'USER': 'dbuser', # 適当です
'PASSWORD': 'FIXME', # 適当です
'HOST': 'FIXME', # 適当です (ローカルホストなら空でも可)
'PORT': 'FIXME', # 適当です (デフォルトポートなら空でも可)
}
}
다음은 Python에서 MySQL을 사용하는 모듈을 pip로 설치합니다.$ pip install PyMySQL
마지막으로 저는 Django 프로젝트에서 MySQL을 사용하겠다고 발표했습니다.
부족한 경우 sqlite이기 때문에 관리합니다.py에서 다음과 같이 기술합시다.
mysite/manage.pyimport pymysql
pymysql.install_as_MySQLdb()
여기까지.$ python manage.py runserver
다음 결과가 나타나면 정상적으로 연결할 수 있습니다.
(migrate계의 오류가 모두 사라졌는지 확인하십시오.)[t.fujimoto@tfujimoto-MacBook-Air:mysite]$ python manage.py runserver
Performing system checks...
System check identified no issues (0 silenced).
October 12, 2016 - 12:51:50
Django version 1.10.2, using settings 'mysite.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
settings.py의 내용
데이터베이스 설정 등 전체 항목을 설정합니다.py지만 여러 가지 중요한 설정이 적혀 있습니다.
여기서 INSTALLED_APPS는 상당히 중요합니다.
INSTALLED_APPS는 프로젝트의 Django 인스턴스에서 활성화된 모든 Django 응용 프로그램의 이름을 유지합니다.
응용 프로그램은 여러 항목에서 사용할 수도 있고 다른 개발자가 만든 응용 프로그램을 가져올 수도 있다.
초기 설정은 다음과 같다.
mysite/mysite/settings.pyINSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
각 응용 프로그램은 다음과 같은 역할을 담당한다.
# Database
# https://docs.djangoproject.com/en/1.10/ref/settings/#databases
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
# Database
# https://docs.djangoproject.com/en/1.10/ref/settings/#databases
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'dbname', # 適当です
'USER': 'dbuser', # 適当です
'PASSWORD': 'FIXME', # 適当です
'HOST': 'FIXME', # 適当です (ローカルホストなら空でも可)
'PORT': 'FIXME', # 適当です (デフォルトポートなら空でも可)
}
}
$ pip install PyMySQL
import pymysql
pymysql.install_as_MySQLdb()
$ python manage.py runserver
[t.fujimoto@tfujimoto-MacBook-Air:mysite]$ python manage.py runserver
Performing system checks...
System check identified no issues (0 silenced).
October 12, 2016 - 12:51:50
Django version 1.10.2, using settings 'mysite.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
데이터베이스 설정 등 전체 항목을 설정합니다.py지만 여러 가지 중요한 설정이 적혀 있습니다.
여기서 INSTALLED_APPS는 상당히 중요합니다.
INSTALLED_APPS는 프로젝트의 Django 인스턴스에서 활성화된 모든 Django 응용 프로그램의 이름을 유지합니다.
응용 프로그램은 여러 항목에서 사용할 수도 있고 다른 개발자가 만든 응용 프로그램을 가져올 수도 있다.
초기 설정은 다음과 같다.
mysite/mysite/settings.py
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
각 응용 프로그램은 다음과 같은 역할을 담당한다.상술한 응용 프로그램은 데이터베이스를 사용한다.
이를 위해서는 초기 설정으로 표를 만들어야 한다.
다음 명령으로migrate 파일을 실행합니다.
$ python manage.py migrate
모델 생성하기
모델은 기존 데이터의 유일한 결정적인 원천이다.
모델은 저장하고 싶은 데이터에 필요한 필드와 데이터의 행동을 설명합니다.
이번 튜토리얼은 투표 앱을 만들었어요.
투표 항목을 포함하는 Question 테이블 (모델) 과 Question 투표 항목 텍스트 등을 포함하는 Choice 테이블 (모델) 을 만듭니다.
아래와 같다.
mysite/polls/models.pyfrom django.db import models
# Create your models here.
class Question(models.Model):
quesion_text = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published')
class Choice(models.Model):
question = models.ForeignKey(Question, on_delete=models.CASCADE)
choice_text = models.CharField(max_length=200)
votes = models.IntegerField(default=0)
모델 활성화
모델이 생성되었지만 데이터베이스에 반영되지 않았습니다.
from django.db import models
# Create your models here.
class Question(models.Model):
quesion_text = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published')
class Choice(models.Model):
question = models.ForeignKey(Question, on_delete=models.CASCADE)
choice_text = models.CharField(max_length=200)
votes = models.IntegerField(default=0)
모델이 생성되었지만 데이터베이스에 반영되지 않았습니다.
상술한 것을 가능하게 하는 설정을 진행하다.
우선 Django 프로젝트에서 polls 응용 프로그램을 사용하도록 명시해야 합니다.
방금 소개한 mysite/settings.py의 INSTALLED_APPS를 다음과 같이 변경합니다.
mysite/mysite/settings.py
INSTALLED_APPS = [
'polls.apps.PollsConfig', # 追加
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
상기 추가가 완료되면 이전 스크립트를 만듭니다.다음 명령을 사용하여 마이그레이션 스크립트를 만들 수 있습니다.
$ python manage.py makemigrations polls
makemigrations를 실행하면 Django의 모델에 변경 사항이 발생했다고 알려주고 변경 사항을 이전 형식으로 저장할 수 있습니다.마이그레이션은 Django가 모델 변경 사항을 디스크의 파일에 저장하는 방법입니다.
생성된 마이그레이션은 모든 응용 프로그램의migrations 디렉터리에 번호로 저장됩니다.
이번에 제작된 이전 스크립트는 다음과 같다.
# -*- coding: utf-8 -*-
# Generated by Django 1.10.2 on 2016-10-12 13:20
from __future__ import unicode_literals
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
initial = True
dependencies = [
]
operations = [
migrations.CreateModel(
name='Choice',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('choice_text', models.CharField(max_length=200)),
('votes', models.IntegerField(default=0)),
],
),
migrations.CreateModel(
name='Question',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('quesion_text', models.CharField(max_length=200)),
('pub_date', models.DateTimeField(verbose_name='date published')),
],
),
migrations.AddField(
model_name='choice',
name='question',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='polls.Question'),
),
]
마이그레이션 스크립트가 완료되면 계속 실행하기만 하면 됩니다.$ python manage.py migrate
위의 설명에서 실행 중인 마이그레이션 스크립트를 실행합니다.마이그레이션 스크립트를 지정하여 게시할 SQL을 결정할 수도 있습니다.
$ python manage.py sqlmigrate polls 0001
다음은 0001의 파일이라면 CRATE 문구 등을 확인할 수 있을 것 같습니다.모델에서 스크립트를 마이그레이션하는 프로세스
모형 제작(각 응용 프로그램의 모델s.py)
↓
프로그램이 프로젝트로 가져오기 (mysite의 settings.py의 INSTALLED_APP)
↓
모델 기반 마이그레이션 스크립트 만들기
↓
마이그레이션 스크립트 실행
Django의 디자인 철학
Django 응용 프로그램은 확장 가능입니다.
응용 프로그램이 특정한 Django 프로젝트와 결합되지 않았기 때문에 여러 항목에서 응용 프로그램을 사용할 수도 있고 단독으로 응용 프로그램을 발표할 수도 있다.
Django Admin
기본적으로 Django에는 관리 사이트가 함께 제공됩니다.
우선 관리 사이트에 로그인할 수 있는 슈퍼 사용자를 만든다.$ python manage.py createsuperuser
사용자 ID와 암호를 대화 형식으로 설정하십시오.
만약 슈퍼 사용자가 있다면, 나는 실제로 로그인할 것이다.
브라우저를 시작하여 이 지역의 localhost/admin/
에 액세스합니다.
로그인에 성공하면 다음 관리 화면이 표시됩니다.
Polls 응용 프로그램을 admin에서 편집할 수 있도록 설정합니다.
설정이 없으면 Polls 응용 프로그램이 admin에 표시되지 않습니다.
admin에서 작업을 시작할 수 있도록 Polls 응용 프로그램을 수정합니다.
polls의 admin.다음과 같이 py를 수정합니다.
polls/admin.pyfrom django.contrib import admin
# Register your models here.
from .models import Question
admin.site.register(Question)
개발 서버를 다시 로드하면
안녕하십니까? 폴스가 추가되었는지 알고 싶습니다.
이제 GUI 작업을 통해 POLLS를 수정할 수 있습니다.
총결산
이번에 우리는 모델의 제작, 스크립트의 집행, 화면 관리에 대한 견해를 소개했다.
비록 매우 소박한 한 번이지만 이것은 다음 이후의 보기 조작과 밀접한 관계를 가진 중요한 한 번이다.
다음에는 직접 만든 보기의 제작과 템플릿 파일의 사용 방법에 대해 설명하고 싶습니다.
GitHub
시리즈
기본적으로 Django에는 관리 사이트가 함께 제공됩니다.
우선 관리 사이트에 로그인할 수 있는 슈퍼 사용자를 만든다.
$ python manage.py createsuperuser
사용자 ID와 암호를 대화 형식으로 설정하십시오.만약 슈퍼 사용자가 있다면, 나는 실제로 로그인할 것이다.
브라우저를 시작하여 이 지역의
localhost/admin/
에 액세스합니다.로그인에 성공하면 다음 관리 화면이 표시됩니다.
Polls 응용 프로그램을 admin에서 편집할 수 있도록 설정합니다.
설정이 없으면 Polls 응용 프로그램이 admin에 표시되지 않습니다.
admin에서 작업을 시작할 수 있도록 Polls 응용 프로그램을 수정합니다.
polls의 admin.다음과 같이 py를 수정합니다.
polls/admin.py
from django.contrib import admin
# Register your models here.
from .models import Question
admin.site.register(Question)
개발 서버를 다시 로드하면안녕하십니까? 폴스가 추가되었는지 알고 싶습니다.
이제 GUI 작업을 통해 POLLS를 수정할 수 있습니다.
총결산
이번에 우리는 모델의 제작, 스크립트의 집행, 화면 관리에 대한 견해를 소개했다.
비록 매우 소박한 한 번이지만 이것은 다음 이후의 보기 조작과 밀접한 관계를 가진 중요한 한 번이다.
다음에는 직접 만든 보기의 제작과 템플릿 파일의 사용 방법에 대해 설명하고 싶습니다.
GitHub
시리즈
Reference
이 문제에 관하여(장고를 시작하자!튜토리얼 ②~), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/tfrcm/items/27d2c9e4b3334447b6af텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)