project안의 여러 App들은 하나의 역할만을 담당하도록 설계되어있다.
account(회원가입)나 comments(댓글)와 같이 다른 웹사이트에서도 공통적으로 만들어야하는 기능을 앱으로 구현하였다면 해당 App을 "패키징"하여 다른 웹사이트에 적용할 수 있다.
패키징이란?
패키지 묶기
해당 앱 외부에 새로운 폴더를 하나 만들어 앱을 폴더 안으로 '이동' 시킨다. (복사X)
장고 공식 문서를 이용해 다음과 같은 4개의 파일을 만든다.
① README.rst : 패키지의 소개/사용설명서/기능명세서
Polls
=====
Polls is a simple Django app to conduct Web-based polls. For each
question, visitors can choose between a fixed number of answers.
Detailed documentation is in the "docs" directory.
Quick start
-----------
1. Add "polls" to your INSTALLED_APPS setting like this::
INSTALLED_APPS = [
...
'polls',
]
2. Include the polls URLconf in your project urls.py like this::
path('polls/', include('polls.urls')),
3. Run `python manage.py migrate` to create the polls models.
4. Start the development server and visit http://127.0.0.1:8000/admin/
to create a poll (you'll need the Admin app enabled).
5. Visit http://127.0.0.1:8000/polls/ to participate in the poll.
위의 앱 이름이 poll일 때, 해당하는 것이고, 앱의 이름이 다르다면 해당하는 것으로 바꿔주세요.
한글을 지원해주지 않는 경우에는 에러가 날 수 있으니 한글 사용은 되도록 자제하도록 합시다!!
② LICENSE : 라이센스
Copyright (c) ,
All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
③ setup.py : 설치 방법 과정
import os
from setuptools import find_packages, setup
with open(os.path.join(os.path.dirname(__file__), 'README.rst')) as readme:
README = readme.read()
# allow setup.py to be run from any path
os.chdir(os.path.normpath(os.path.join(os.path.abspath(__file__), os.pardir)))
setup(
name='django-polls',
version='0.1',
packages=find_packages(),
include_package_data=True,
license='BSD License', # example license
description='A simple Django app to conduct Web-based polls.',
long_description=README,
url='https://www.example.com/',
author='Your Name',
author_email='yourname@example.com',
classifiers=[
'Environment :: Web Environment',
'Framework :: Django',
'Framework :: Django :: X.Y', # replace "X.Y" as appropriate
'Intended Audience :: Developers',
'License :: OSI Approved :: BSD License', # example license
'Operating System :: OS Independent',
'Programming Language :: Python',
'Programming Language :: Python :: 3.5',
'Programming Language :: Python :: 3.6',
'Topic :: Internet :: WWW/HTTP',
'Topic :: Internet :: WWW/HTTP :: Dynamic Content',
],
)
setup의 name과 description을 앱에 맞게 변경해주세요~
④ MANIFEST.in : 파이썬 파일이 아닌 파일들 명시
include LICENSE
include README.rst
recursive-include polls/static *
recursive-include polls/templates *
모두 마쳤다면 이를 모두 묶어주는 명령어를 입력할게요.
$ python setup.py sdist
그러면 해당 dist 폴더에 gz파일이 하나 생성되었을 것이다.
패키지 풀기(설치하기)
해당 앱을 가지고 있는 프로젝트에서
$ pip install <패키지이름>
'Server > django' 카테고리의 다른 글
[Django] 장고 기초 - AWS 배포하기 (0) | 2020.03.05 |
---|---|
[Django] 장고 기초 - PostgreSQL DB연동 (0) | 2020.03.05 |
[Django] 장고 기초 - 썸네일 만들기 (0) | 2020.03.01 |
[Django] 장고 기초 - API (0) | 2020.02.28 |
[Django] 장고 기초 - 소셜 로그인 (Google) (3) | 2019.12.31 |