일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 장고
- 장고로 ERP
- 페이지 최적화
- ERP
- bzpopmin
- django
- Self ERP
- 중량 관리
- query 최적화
- test drive development
- materialized
- channels
- qpa_plugin
- uiload
- qwindows.dll
- pyside6
- 재고 관리
- django rank
- django erp
- pip 오류
- optimization page
- tensorflow
- 파이썬
- 채널스
- Python
- pyside6 ui
- django test
- QApplication
- django drf
- pip 설치
- Today
- Total
취미삼아 배우는 프로그래밍
Django 로 ERP를 만들어 보려한다. 본문
먼저, 설치나 이용등의 가이드는 아주 많았다.
특히나 장고걸스.
네이밍이 원더걸스로부터 따온듯한 느낌이 드는 사이트였다.
글쓴이가 한국 사람인가.. 싶었다. 언제적거지..
영어 번역판도 있는데,
은근 외국인들이 추천으로 읊어주는거같다.
장고걸스가 옛날 글이긴 하지만,
따라해도 딱히 문제는 없는것 같았다.
장고 버전이 좀 옛날거라,
URL 부분만 조금 다르더라.
1. 파이썬 설치
https://tutorial.djangogirls.org/ko/python_introduction/
Python 시작하기 · Django Girls Tutorial
파이썬과 놀아보려면 커맨드 라인 창을 켜야합니다. Command Line 시작하기 장에서 어떻게 하는지 배웠어요. 준비되었다면, 아래 내용을 잘 따라오세요. 파이썬 콘솔을 실행하기 위해, 윈도우에서는 python을 입력하고, 맥OS나 리눅스라면 python3를 입력하고 엔터를 입력하세요. 파이썬을 실행시키면 프롬프트가 >>>로 바뀝니다. 이제부터는 파이썬 언어 명령어만 사용할 수 있다는 뜻이예요. >>>를 입력할 필요 없어요. 파이썬이 대신해 줄 테니까요
tutorial.djangogirls.org
2. Django(장고) 설치
https://tutorial.djangogirls.org/ko/django_installation/
Django 설치하기 · Django Girls Tutorial
virtualenv를 생성하려면 콘솔 창을 열고, (이전 장에서 얘기했는데, 기억나죠?) 그리고 C:\Python35\python -m venv myvenv를 실행하세요. 아마도 화면에 이렇게 보일 거에요. : command-line C:\Users\Name\djangogirls> C:\Python35\python -m venv myvenv 여기서 C:\Python35\python은 이전에 파이썬을 설치 한 디렉토리이고 myvenv는virtualenv의
tutorial.djangogirls.org
3. Django-admin startapp mysite
https://docs.djangoproject.com/ko/2.2/intro/tutorial01/
첫 번째 장고 앱 작성하기, part 1 | Django 문서 | Django
Django The web framework for perfectionists with deadlines. Overview Download Documentation News Community Code Issues About ♥ Donate
docs.djangoproject.com
4. MVC 패턴의 이해
근 일주일정도 만져본 장고는
큰 구조 자체에서 볼 때는 아주 간단했다.
Django-admin startapp <앱명>
을 통해 생성되는
폴더 자체를 "APP" 이라 부른다.
에게? 싶었는데,
나름의 체계적인 분류였고,
써본결과 타당하다 생각된다.
App 안에는
.Py | 역할 |
__init__.py | 이 폴더가 하나의 패키지라는 것을 알려줌 |
apps.py | 이 앱의 세팅을 알려줌 |
models.py | 이 앱이 쓰는 모델(DB의 형태)을 알려줌 |
admin.py | 이 앱이 어드민계정에서 어떻게 쓰일지를 알려줌 |
test.py | 이 앱을 어떻게 테스트하는 것인지 알려줌 |
views.py | 이 앱을 통해 어떤걸 보여줄 건지 알려줌 |
로 제 역할을 다 따로 한다.
물론 귀찮으면
한 곳에다가 죄다 몰아넣고 써도..
상관은 없다.
근데 굳이..?
그럴필요는 없는것 같다.
나름의 룰이고, 지켜서 나쁜것은 없다.
나중에 폴더가 많아서 클릭하기 좀 귀찮기는 해도 헷갈리진 않는다.
폴더이름을 비슷하게 해두면 헷갈려서 핵지옥을 맛본다.
MVC 모델을 이해해보자. ㅡ
결국 내가 느낀 바,
모델(M)이 지옥이면, 뷰(V)도 지옥이고
템플릿(C)이 지옥이면
그곳은 더 지옥이 될거다.
라는 느낌
개인적으로 교회는 싫지만 지옥도 싫다.
5. VS Code 세팅
Extension | 역할 |
Djangoneiro |
Django Template을 작성할 때 좋음 (사실 잘 모르겠음. 어떻게 쓰는건지..) |
Live Server | Html을 작성할 때, 실시간으로 화면을 갱신시켜 주기 때문에 사용 |
Prettier | 코드를 이쁘게 다듬어줌 |
Python | 저절로 .. |
Remote WSL |
채팅하는거 만드려고 윈도우 내에 가상 리눅스를 설치하고나서 코드를 들어왔더니 제멋대로 깔렸다. Redis를 실행시 자동실행하는걸로 등록해놨는데, 그거때문에 이거랑 엄청 꼬인다. |
vscode-icons | 폴더가 매우 많기 때문에, 이를 보기좋게 하려고 사용 |
세팅의 경우
python -m venv myvenv
를 통해 myvenv라는 가상환경을 만들고
커맨드 라인
code .
을 통해 키면, 알아서 등록된다.
조금 눈여겨 봐야할 부분은 이부분.
초기에는 args 쪽 runserver 밑에 --noreload 라고 돼있는 부분을 삭제하고 하는게 좋은 것 같다.
(없다면, F5를 눌러서 Django를 선택해보라. 생긴다.)
(물론 처음에만.)
이렇게 해두면 저장할 때마다 서버가 재시작된다
한 번 켜놓고 그냥 사용하면 된다는 소리.
하지만 무엇보다 제일 중요한건
"폰트"다
폰트는 Hack를 추천.
한글폰트는 지원하지 않지만,
이 부분은 딱히 나쁘진 않다.
폰트가 이쁘니 영어를 치는 맛이 난다.
6. Static 폴더 세팅
#Settings.py 에 추가.
STATICFILES_DIRS = (
os.path.join(BASE_DIR, 'static'),
)
PROJECT_DIR = os.path.dirname(os.path.abspath(__file__))
STATIC_ROOT = os.path.join(PROJECT_DIR, 'static')
이렇게 하면, 프로젝트 메인 디렉토리내의
static 이라는 폴더가 스태틱 폴더가 된다.
7. Template 폴더 세팅
# Settings.py 내에 내용 수정
# 'DIRS': [os.path.join(BASE_DIR,'templates')] 부분을 변경할 것
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR,'templates')],
'APP_DIRS': True,
'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',
],
},
},
]
템플릿을 보관하는 방법에는 두 가지 방법이 있다.
1) 각 앱별 템플릿에 보관하거나,
2) 메인 프로젝트 폴더내에 서 앱 별로 관리하거나.
*
8. base.html 작성
base.html을 작성하기에 앞서,
무엇을 베이스 삼아서 작성을 할 지 정해야 한다.
보통은 Bootstrap으로 작성을 많이 하던데,,
나는 Materialized를 써보려 한다.
되게 모던해보이기 때문.
모던함은 신사의 필수 조건이기 때문.
https://materializecss.com/getting-started.html
에서 CSS 및 JS를 다운받고 static폴더에 넣는다.
나의 경우엔,,
홈페이지를 component로 쪼개고
이를 따로따로 로드하는 방식을 채택했다.
static이 잘 들어갔는지 확인하기 위해선
python manage.py collectstatic
을 통해 모아주고
python manage.py find static 파일명
을 통해 이놈이 찾을 수 있는지 확인해준다.
(myvenv) PS C:\django_app\To_Do_App> python manage.py findstatic css/materialize.css
Found 'css/materialize.css' here:
C:\django_app\To_Do_App\static\css\materialize.css
잘 되면 이런식으로 메세지가 뜬다.
나의 경우엔 템플릿을아래처럼 보관 및 작성했다.
코드 예시
<!-- base.html -->
{% include "./component/head.html %}
{% include "./component/navbar.html"%}
<body>
<main>
{% block content %}
{% endblock %}
</main>
{% include "./component/footer.html" %}
{% include "./component/script_in_body.html" %}
</body>
<script>
$('.dropdown-trigger').dropdown();
$(document).ready(function(){
$('.collapsible').collapsible();
});
</script>
{% block script %}
{% endblock %}
</html>
잘 되면..
이런 식인데,
NavBar 쪽이 너무 힘들었다.
[생산] 쪽에 Collapsible 하나를 추가했는데
이놈이 한 단계 위에서부터 시작한다.
하.
저거 한 단계만 내리려고 갖은 고생을 했는데,!!
"어차피 메뉴 하나만 만들거 아니니까.."
하고 네 시간만에 내면의 나와
악수했다.
9. 아무렇게나 index를 작성
# SomeApp의 Views.py
# 템플릿 테스트다.
from django.shortcuts import render
# Create your views here.
def template_test2(request):
return render(request,"modeltest/modeltest_index.html",
{
'content':"이거 테스트임",
})
URL도 Settings.py있는 곳에 알아서 등록하고 나면
잘 돌아간다.
아주좋고.
10. 모델을 구상한다.
우리 회사는 ERP가 있지만 이놈의 ERP는
'엑셀 파일을 다운받기 위한 도구'에 불과하다.
에라이.
그러니까. 모델도 Pandas를 이용하여 엑셀로 추출하기 쉽게끔 해야할 듯 하다.
아니면 openpyxl을 이용해서 .xlsx로 저장하던가.
마침,
파이썬 모델과 아주 닮았다.
회사내에서
업체명/현장명/분류1/분류2/분류3
등으로 구분해서 진행하는 경우가 잦기에
이를 통해 모델을 구상한다.
이부분거는 확실히 말할 수 있다.
엑셀이 편하다.
https://wayhome25.github.io/django/2017/03/02/django-06-poll-project-2-model/
django 06. 두번째 장고앱 2 - 모델만들기 · 초보몽키의 개발공부로그
django 06. 두번째 장고앱 2 - 모델만들기 파이썬 웹 프로그래밍 - Django로 웹 서비스 개발하기 모델 만들기 django는 model이 Database를 저장한다. ORM (Object Relational Mapping) : 오브젝트와 데이터베이스를 연결하여 데이터베이스의 CRUD를 쉽게 할 수 있게 함 데이터베이스 모델링 보통 요구사항 분석이 끝나면 데이터베이스 모델링, 즉 데이터베이스 설계를 하게 된다. 여기서 choice 모델의 fk(
wayhome25.github.io
에서 보면,
ForeingKey, 등을 저런식으로 나타내니 눈에 확 머리에 확 와닿았다.
아직 Model을 작성하진 않았는데,
느낌상, Model이 50% View가 40% Template이 10%정도인것 같다.
아마.
모델만 작성하면 평탄하고 수월하게 진행할 수 있지 않을까?
ㅡㅡㅡ
기타 추가하고 싶은 기능
* Channels, Redis 및 Websocket을 이용한 실시간 데이터 테이블
이 부분은 Html에서 쓰는 React로 진행을 해볼까..
그치만 무적권 쉬운 방향으로 해야한다.
* 알림 기능
* 채팅 기능(공지용도로.. 우리 사내 ERP에는 채팅기능이 없기 때문...ㅠㅠ)
ㅡㅡㅡ
기타 참고한 사이트 및 영상
1. PyERP : 현재 제작진행중.
https://github.com/falconsoft3d/pyerp
falconsoft3d/pyerp
Documentation https://falconsoft3d.github.io/pyerp/ - falconsoft3d/pyerp
github.com
: 나에게 영감을 준 아저씨..
웃음이 너무 좋아보여서 1주일간 장고를 파게해준 아저씨..
admin에 가입하는 방법을 몰라서
내가 직접 짜게 됐다. 그 때는 1일차여서 그런지 모르겠는데
아마 지금도 못들어가지 않을까.
(유저 가입을 하려면 나라를 입력해야 하는데, 나라에 리스트가 없어서 가입을 전혀 진행시키지 못했다.)
2. Django Chat Room : 함께 코딩
https://www.youtube.com/results?search_query=django+chatroom
django chatroom - YouTube
Two years ago, Django Django's drummer/producer David Maclean was standing backstage at a festival in Chicago, chatting to a ... 구독구독중구독 취소
www.youtube.com
: 영어라고 쫄것 없다. 어차피 코딩은 만국 공용어임을 느낀다.
하다하다보면 자료가 없어서 아랍사람이 설명해주는 것도 듣게된다.
이 때는 스피커를 끄면 뭔 말인지 모르겠지만, 키면 뭔 말인지 알게되는 이상한 경험도 했다.
여튼 장고를 이용한 채팅이 가능하다는걸 보여준 아저씨.. 너무신기했다.
그치만.. 노드JS에서는 템플릿 빼고 30줄도 안되서 만들긴 하지만..
일단 ok 나름 체계적인걸.!
3. 알람 하나가 이렇게 어려운 기능입니다. 여러분.
장고(Django) Channels를 활용하여 기본 알람 기능 구현하기-셋팅편-
웹소켓(Websocket) 이전 시대에서는 사용자와 서버는 상호 통신할 수가 없었다. 사용자가 서버에 일방적으로 데이터를 전송할 수 있을 뿐, 그 반대는 불가능했다.
medium.com
: 이 글에선 윈도우에 리눅스를 설치하는 방법을 알게됐다. 신선했다.
그리고 알람 자체도 그랬다.
알람 하나를 위해 쓴 이 글은 2부작이다.[세팅-작성]
자세하고 길다.
4. 모델작성 및 폼에 관해 영감을 준 Todo App
https://www.youtube.com/watch?v=ovql0Ui3n_I&t=429s
: Redis를 쓰지 않고,
리스트 삭제view, 리스트 추가 view 내에
Redirect를 이용해 페이지를 다시 불러오게 해 내용을 추가시키는 것이 신선했다.
혼자서 쓰면 나름의 실시간 앱이지 않을까.
5. 그 밖에,
다른 장고에 관한 기초강좌들은 너무나도 많았다.
하지만, 심화적인 강좌는 볼 수 없었는데,
그건 왜 그럴까?
어차피 섞어써서 그럴까? 싶다.
다음건, 모델을 짜고, 뷰로 간단하게 보면서 해보는게 좋을것 같다.
'파이썬(장고)' 카테고리의 다른 글
django-channels-database-tableout (0) | 2019.10.31 |
---|---|
python ERP. 모델을 작성해보자.(부제: 삽질일기) (0) | 2019.10.20 |
Python Django . ERP . 모델을 작성해보자. (0) | 2019.10.15 |
Django 삽질기. 그 시작. (0) | 2019.10.14 |
글 작성 테스트 (0) | 2019.09.27 |