본문 바로가기

Project/ToyProject

[Rmanager] STEP - 1st

반응형

오늘의 목표 !

.장고 개발 환경 준비(프로젝트 생성 및 가상 환경 만들기) - O

. 슈퍼유저 생성(Admin 페이지 만들기) - O

. 제품 리스트 목록 및 상세 페이지 구현하기 - O

. 부트스트랩 사용해서 리스트 담긴 테이블 꾸며보기 - O

. 제품 등록 추가 버튼 구현 및 기능 활성화시키기 - X (오류 발생)

첫 번째로는, 명령 프롬프트 창에서 가상 환경을 만들고 그 안에서 프로젝트를 생성했다.

그리고 장고 프레임워크 사용을 위해 장고를 설치하고 pip 업그레이드를 시켜주는 과정이다.

프로젝트 안에 management 디렉터리를 만들고 그 안에 config라는 프로젝트를 실행시켰다,

그리고 서버를 구동한 결과 favicon을 제외하고 잘 실행이 되었다.

favicon은 해당 웹사이트 맨 위 제목 옆에 붙는 아이콘으로 나중에 시간 되면 만들어서 붙일 예정이다.

파이 참을 실행해서 아까 만든 config 파일에 settings를 열어 언어와 시간대를 우리나라로 바꾸었다.

그 이후에 inventory라는 app을 만들어서 실행시키고,

url에서 ~~/inventory를 쳤을 때, 이동해야 하는 페이지를 설정하고 include를 사용하여 코드를 간략화시켰다.

사진 우측에 표시한 내용처럼 inventory 디렉터리 안에 views.py를 이용하여 테스트를 해보았다.

테스트 실행 후, 이제는 리스트를 만들기 위해 inventory-models.py 에서 테이블에서 필요한 값들을 지정해 주었다.

제품명, 순도, 제조사, 저장장소, 카테고리, 부서명, 분할, 코멘트들은 캐릭터 필드로 최대길이를 지정했다.

용량, 잔량은 인테그럴 필드로 숫자를 기입할 수 있게 만들었다.

글쓴이는 Foreignkey를 이용해서 작성하고 0n_delete=models.CASCADE를 지정하여 해당 글쓴이가 회원 탈퇴를 하였을 시, 그 글쓴이가 작성한 자료들은 전부 삭제되게 만들었다.

나머지 날짜 관련 리스트들은 각기 맞는 필드들로 작성하고, msds 같은 파일 관련 리스트는 파일 필드로 지정하였다.

리스트를 작성했으니 해당 모델들을 DB에 입력하기 위해서

python manage.py makemigrations로 테이블 작업 파일을 만들었고,

python manage.py migrate로 테이블을 생성하였다.

실제 생성된 테이블이다.

DB에 테이블을 연결했으니, 이제 이 테이블을 테스트해보기 위해서 슈퍼계정을 생성하였다. (python manage.py createsuperuser)

(장고 프레임워크에서는 슈퍼계정을 생성하여, html을 연결 안 해도 admin계정으로 잘 동작하는지 볼 수 있는 게 큰 장점인 것 같다!)

inventory-admin.py 에서 사진과 같이 만들었던 필드를 슈퍼계정 사이트에 추가시켰다.

admin을 이용해서 만들었던 모델들을 직접 입력해보았다.

현재는 모델당 하나씩 복사해서 입력했지만, 나중에는 DB에 엑셀을 csv파일로 집어넣어 해당 엑셀 파일을 웹사이트에서 리스트로 보여줄 수 있게

구현할 예정!

그리고 모델 작성 시 입력했던 필드 값으로 기능들이 잘 동작하는 걸 테스트해보았다.

admin사이트에서 동작되는 걸 확인하고, 이제는 inventory URL에서 보여주기 위해

management_list.html을 만들고

url-view-templates 구조를 이용해서 웹사이트에 띄워보았다.

admin에서 2개 시약을 테스트로 입력한 값이 잘 출력되는 걸 볼 수 있었다.

이제는 제품 목록과 제품목록 클릭 시 제품내용을 보여줄 페이지를 구현시키기 위해

index와 detail라는 이름으로 함수를 만들었고, 각 함수마다 html을 다르게 표시하였다.

그리고 제품목록 리스트에서는 게시글들을 등록 일순 역순으로 정렬하기 위해 '-registration_date'를 사용하였다.

index 함수를 통해 표시된 리스트 페이지에서 제품명을 클릭하게 되면 작동하게 되는 detail 함수로 URL이 자동으로 변경할 수 있게 만들고,

detail.html을 사진처럼 작성하여 리스트들 중 원하는 값이 잘 출력되는지 확인해보았다.

해당 사진은, 잘못된 URL로 진입하였을 때 보여줄 페이지를 404페이지로 변경시켰다.

그리고, URL 하드코딩 문제 해결을 위해 URL 별칭을 사용하였고, URL 중복 문제를 해결하기 위해 네임스페이스를 사용하였다.

그리고 static 디렉터리를 만들어 필요한 부트스트랩 css, js와 jquery를 넣어놓았다.

부트스트랩을 이용해서 해당 리스트들을 테이블 형식으로 만들었고, 원하는 값들을 코드로 넣어 잘 출력되는 것을 확인할 수 있었다.

그리고, detail.html에도 부트스트랩을 적용하였고, 테이블 형식이 아닌 카드 형식으로 집어넣었다.

후에 css를 더 추가해서 이쁘게 만들어 볼 예정이다.

코드를 간략하게 하기 위해 base.html을 작성하고 list.html과 detail.html에 삽입하였다.

마지막으로 list 페이지에 제품 추가 버튼을 추가하였고, 이제 기능만 잘 작동하면 되는데...ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ

form을 형성해서 모델 폼을 만들고, url, views에도 다 적용시켰는데 오류가 떴다.

No module named 'inventory.forms'

여기서만 3번째 막히는 중이다.

한 시간 동안 구글링 하고 찾아봤는데, 정확한 이유를 모르겠다

내일 다시 시도해봐야겠다.

반응형

'Project > ToyProject' 카테고리의 다른 글

[Rmanager] STEP - 4th  (0) 2021.07.31
[Rmanager] STEP - 3th  (0) 2021.07.31
[Rmanager] STEP - 2nd  (0) 2021.07.31
STEP - 1 오류 해결 !  (0) 2021.07.31
프로젝트 기획안 : [연구실 재고관리 프로그램]  (0) 2021.07.31