Skip to content

Commit

Permalink
Merge pull request #2 from msnodeve/release1/fix
Browse files Browse the repository at this point in the history
[Merge] release1/fix -> master ; 1차 릴리즈 업데이트
  • Loading branch information
msnodeve authored Jul 25, 2019
2 parents 8fcd697 + e44e17a commit 7868fac
Show file tree
Hide file tree
Showing 25 changed files with 364 additions and 533 deletions.
Binary file modified .DS_Store
Binary file not shown.
9 changes: 8 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,16 @@
.venv

# vscode
.DS_Store
.vscode

# python
__pycache__

# database
# testcode
.pytest_cache
.coverage
cov_html

# database
migrations
13 changes: 13 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
GREEN=\033[1;32;40m
RED=\033[1;31;40m
NC=\033[0m # No Color

database:
@bash -c "echo -e \"${GREEN}[db orm 시작]${NC}\""
python manage.py db init
python manage.py db migrate
python manage.py db upgrade

test:
@bash -c "echo -e \"${GREEN}[pytest 시작]${NC}\""
pipenv run pytest app/tests --cov-report=html:cov_html --cov-report=term --cov=app
7 changes: 2 additions & 5 deletions Pipfile
Original file line number Diff line number Diff line change
Expand Up @@ -11,16 +11,13 @@ autopep8 = "*"

[packages]
flask = "*"
flask-script = "*"
flask-sqlalchemy = "*"
flask-marshmallow = "*"
flask-migrate = "*"
pymysql = "*"
flask-restplus = "*"
flask-marshmallow = "*"
marshmallow-jsonapi = "*"
flask-script = "*"
flask-basicauth = "*"
pyjwt = "*"
flask-bcrypt = "*"

[requires]
python_version = "3.7"
90 changes: 4 additions & 86 deletions Pipfile.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

105 changes: 101 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,98 @@

python 개발 환경부터 API, 게시판까지 만들기

---

### **What?**

## Develop Environments

***

- MacBook Pro (13-inch, 2017, Four Thunderbolt 3 Ports)
- Python 3.7
- vscode
- Docker-Compose version 1.23.2, build 1110ad01



## Develop tools

***

- pipenv = pip + virtualenv
- Flask-RESTPlus = Flask-RESTful + Swagger
- MySQL docker container
- Docker-compose



## Project Structure

***

```txt
.
├── README.md
├── app
│ ├── __init__.py
│ ├── constans.py
│ ├── api
│ │ ├── __init__.py
│ │ ├── auth_type.py
│ │ └── database.py
│ ├── posts
│ │ ├── __init__.py
│ │ ├── models.py
│ │ └── views.py
│ ├── users
│ │ ├── __init__.py
│ │ ├── models.py
│ │ └── views.py
│ └── tests
├── confs
│ └── database
│ └── mysql
│ └── .env
├── Pipfile
├── Pipfile.lock
├── Makefile
├── docker-compose.yml
├── .gitignore
└── .envrc
```



## How to run

***

```bash
> docker-compose up -d
> pipenv shell
> pipenv install --dev
> make database
> python manage.py run
```



## Preview

***

![api_image](/images/api_image.png)



## Release

- 2019년 7월 25일 1차 릴리즈 v1.0





### What?

> 왜 해야 하는가
Expand All @@ -13,6 +102,8 @@ python 개발 환경부터 API, 게시판까지 만들기
3. 백 엔드, 프론트 엔드 까지 풀 스택을 목표로
4. 프로페셔널한 개발자가 되기 위해서

***

### **개인적 의견**

안드로이드 클라이언트만 개발하다 보니 RESTful(?) 백 엔드(?) 뭐가 뭐인지 아무것도 이해할 수도 이해할 시간도 이해할 겨를도 없었다. 처음엔 말로만 백 엔드 개발자가 되어야지 그랬지만, 이제는 다르다. 서울에 올라온 만큼 내 롤 모델 개발자 형 밑에서 열심히 공부해 많은 것을 해 보고자 한다. 본인의 입으로 "나는 개발자다"라고 말하고 다니는 이상 모르고 넘어가면 안 될 부분이 상당히 많다고 생각한다. 이 프로젝트도 그러하다. 모르는 사람들은 절대로 모를 것이다. 백 엔드 프로그래머가 되기 위해서는 기본적으로 갖추어야 할 소양이라 생각한다!
Expand All @@ -34,12 +125,18 @@ python 개발 환경부터 API, 게시판까지 만들기

> 언제 할 것인가
2019년 7월 11일부터 시작했으며 게시판을 완성할 때까지 계속할 것이다.
2019년 7월 11일부터 시작했으며 게시판 API를 완성할 때까지 계속할 것이다.

- 2019년 7월 25일 1차 릴리즈

---

### **Who?**

> 누가 하는가
알려주시는 형과 함께하지만, 당연히 혼자 머리를 싸매고 끙끙해야겠지 !
내가 한다.



이제 시작해보도록 합시다!
Binary file removed app/.DS_Store
Binary file not shown.
38 changes: 11 additions & 27 deletions app/__init__.py
Original file line number Diff line number Diff line change
@@ -1,40 +1,24 @@
"""
app init
APP을 실행하기 위해 config file
"""
from flask import Flask, render_template, jsonify
from flask_restplus import Resource, Api, fields, reqparse
from flask_sqlalchemy import SQLAlchemy
from sqlalchemy.exc import SQLAlchemyError
from sqlalchemy.sql import text
from flask_marshmallow import Marshmallow
from app.api.database import DB
from app.api import REST_API

SQLALCHEMY_DATABASE_URI = \
("mysql+pymysql://{USER}:{PASSWORD}@{ADDR}:{PORT}/{NAME}?charset=utf8")

# 설명할 API에 대한 것
MA = Marshmallow()
from flask import Flask
from app.api.database import DB, MA
from app.api import REST_API
from app.constants import SQLALCHEMY_DATABASE_URI_FORMAT

def create_app() -> (Flask):
""" create_app() 함수를 호출해 앱을 초기화 """

""" app config part """
# 나중에 config는 다 빼야 할 것 같다.
def create_app()->(Flask):
""" create_app()을 호출하여 app을 초기화 """
app = Flask(__name__)
app.app_context().push()
app.config['SQLALCHEMY_DATABASE_URI'] = SQLALCHEMY_DATABASE_URI.format(
USER="root",
PASSWORD="1234",
ADDR="127.0.0.1",
PORT=3306,
NAME="board"
)

app.config['SQLALCHEMY_DATABASE_URI'] = SQLALCHEMY_DATABASE_URI_FORMAT
app.config['SQLALCHEMY_ECHO'] = True
app.config['DEBUG'] = True

DB.init_app(app)
REST_API.init_app(app)
MA.init_app(app)

""" return part """

return app
6 changes: 5 additions & 1 deletion app/api/__init__.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
"""
API config file
"""

from flask_restplus import Api
from app.users.views import API as users_api
from app.posts.views import API as posts_api
Expand All @@ -6,4 +10,4 @@
REST_API = Api(authorizations={**ACCESS_TOKEN, **BASIC_AUTH})

REST_API.add_namespace(users_api, '/user')
REST_API.add_namespace(posts_api, '/posts')
REST_API.add_namespace(posts_api, '/post')
Loading

0 comments on commit 7868fac

Please sign in to comment.