1.1 django project

  1. 프로젝트 생성

    가상 환경이 활성화 된 현재 폴더 안에 프로젝트를 생성. 명령어 마지막 `.` 주의.

    project 를 생성할 때, Python 이나 Django 에서 사용중인 이름은 피해야 한다.

    `-` 도 사용할 수 없다.

    (ex. django, test, class, django-test...)

    $ django-admin startproject intro .
  2. 서버 실행

    $ python manage.py runserver
  3. gitignore 설정

    $ touch .gitignore
  4. TIME_ZONE, LANGUAGE_CODE 설정

    • `settings.py`

      LANGUAGE_CODE = 'ko-kr' TIME_ZONE = 'Asia/Seoul'
  5. 서버 재실행 및 한글화 확인

**상황에 따른 설정**

공식문서에 따르면, 단일 프로젝트에서는 `django-admin` 보다는 `manage.py`를 사용하는 것이 편할 것이라고 이야기한다. 기본적으로 후자는 프로젝트 경로를 시스템 path에 추가하며, settings.py 설정된 내용을 `DJANGO_SETTINGS_MODULE` 환경변수에 넣어서 활용한다.

다만, 나중에 프로젝트 및 app 단위별로 setting이 나뉘게 된다면 이 경우에는 `django-admin` 명령어에 CLI 옵션 `--settings` 를 통해 지정하여 실행할 수 있는 장점이 있다.

  1. 프로젝트 구조

django-intro/ manage.py intro/ __init__.py settings.py urls.py wsgi.py db.sqlite3

  • `django-intro/`: 디렉토리 바깥의 디렉토리는 단순히 프로젝트를 담는 공간. 이 이름은 Django 와 아무 상관이 없으니, 원하는 이름으로 변경이 가능.

  • `manage.py`: Django 프로젝트와 다양한 방법으로 상호작용 하는 커맨드라인의 유틸리티.

  • `django_intro/`: 디렉토리 내부에는 project 를 위한 실제 Python 패키지들이 저장됨. 이 디렉토리 내의 이름을 이용하여, (`django_intro.urls` 와 같은 식으로) project 어디서나 Python 패키지들을 import 할 수 있다.

  • `__init__.py`: Python 으로 하여금 이 디렉토리를 패키지 처럼 다루라고 알려주는 용도의 단순한 빈 파일.

  • `settings.py`: 현재 Django project 의 모든 환경/구성을 저장.

  • `urls.py`: 현재 Django project 의 URL 선언을 저장. Django 로 작성된 사이트의 "목차". 사이트의 url 과 views 의 연결을 지정. 모든 url 매핑 코드가 포함될 수 있지만, 특정한 어플리케이션에 매핑의 일부를 할당해주는 것이 일반적.

  • `wsgi.py`: 현재 project 를 서비스 하기 위한 WSGI 호환 웹 서버의 진입점.

    • `WSGI(Web server gateway interface)`: 파이썬 웹 프레임워크에서 사용하는 웹서버 규칙

 

1.2 django application

  • 실제로 특정한 역할을 해주는 친구가 바로 application

  • 프로젝트는 이러한 어플리케이션의 집합이고, 실제 요청을 처리하고 페이지를 보여주고 하는 것들은 이 어플리케이션의 역할

  • 하나의 프로젝트는 여러 개의 어플리케이션을 가질 수 있다.

    • 어플리케이션은 하나의 역할 및 기능 단위로 쪼개는 것이 일반적이나 작은 규모의 서비스에서는 잘 나누지 않는다. 반드시 이렇게 나눠야 한다는 기준 또한 없다.

  • 각각의 어플리케이션은 MTV 패턴으로 구성되어 있다.

  1. Application 만들기

    $ python manage.py startapp home
  2. Application 구조

    home/ __init__.py admin.py apps.py models.py tests.py views.py migrations/ __init__.py
    • `admin.py` : 관리자용 페이지 커스터마이징 장소.

    • `apps.py` : 앱의 정보가 있는 곳. 우선 우리는 수정할 일이 없다.

    • `models.py` : 앱에서 사용하는 Model 를 정의하는 곳.

    • `tests.py` : 테스트 코드를 작성하는 곳.

    • `views.py` : view 들이 정의 되는 곳. 사용자에게 어떤 데이터를 보여줄지 구현하는 곳.

  3. Application 등록

    • 방금 생성한 application 을 사용하려면 프로젝트에게 앱을 만들었다고 알려주어야 사용 가능하다.

    • `home > apps.py > class HomeConfig()` 구조 이기 때문에 `home.apps.HomeConfig` 로 작성한다.

    •  

      `settings.py`

       

    INSTALLED_APPS = [
       #  Local Apps
       'home.apps.HomeConfig',
  
       #  Django Apps
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
    ]
    # 항상 `,`(쉼표) 를 작성해주고 마치는 습관을 가진다.
    # 혹은 그냥 'home' 이라고 작성할 수 있다. 다만, 후반부 자세한 설정에 한계가 있기 때문에 위처럼 작성한다.

 

'Python2 > Django(장고)' 카테고리의 다른 글

1  (0) 2019.06.12

파이썬을 이용하여 CRUD를 사용한 프로젝트 MOVIE를 작성해보겠다.

._movies.json
0.00MB

 

1. movie-crud 라는 프로젝트를 생성한다.
* 터미널에 아래 명령어 입력
2. pip install django
3. django-admin startproject crud .

4. 생성된 URL접속

 

로켓모양 웹사이트가 뜨면 성공!

 

* django는 app으로 구성되어 있으므로 app을 생성한다. 
python manage.py startapp movies

 

models.py 작성하기

(아래 코드 첨부)


from django.db import models

# Create your models here.
class Movie(models.Model) :
    title = models.CharField(max_length = 100)
    title_origin = models.CharField(max_length = 100)

    vote_count = models.IntegerField()
    open_date = models.CharField(max_length = 30)

    genre = models.CharField(max_length = 20)
    score = models.FloatField()
    poster_url = models.TextField()
    description = models.TextField()

 

나 이렇게 했어~ 설계도 보여줘
python manage.py makemigrations
    -> No changes detected 뜸
    왜 떠? 아직 출생신고 안했잖아?

 

일명 출생신고! setting.py 에서

 

INSTALLED_APPS = [
    #django apps
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',

    #local apps
    'movies',
]

 

이렇게 수정하기

python manage.py makemigrations 
-> 어떻게 반영할지 설계도 작성, 우리가 모델을 작성을 다했다고 django한테 알려줌.

-> 0001_initial.py가 생성됨.

python manage.py migrate 
-> 실제 장고가 우리에게 만들어준 설계도를 기반으로 실제 db에 반영시키는 것 
-> 테이블을 만드는 것

movies 아래 fixtures 디렉토리 생성

생성한 디렉토리에 movies.json를 넣기 

    -> movies.json 파일 따로 첨부파일로 걸어둠.

터미널에 아래 입력하기 
python manage.py loaddata movies.json

admin.py작성

(아래에 코드 첨부)

 

from django.contrib import admin
from .models import Movie

# Register your models here.
admin.site.register(Movie)

python manage.py createsuperuser
-> username, email, pw 입력
-> email은 입력하지 않아도 됨.

 

python manage.py runserver

을 터미널에 입력한 후 뜬 url로 접속

그리고

url뒤에 /admin 붙임.

관리자 페이지로 접속이 되고 (위에서 설정한 id/pw)

Movies로 들어감.

 

위와 같이 목록 중에서 아무거나 택하여 들어가면 영화정보를 알 수 있음.

'Python2 > CRUD' 카테고리의 다른 글

[공대란아] CRUD프로젝트1_MOVIE_0_목표  (0) 2019.06.12
[공대란아] CRUD란?  (0) 2019.06.12

+ Recent posts