[코딩온] 장고 강좌 6(설치과정)

TonyHan·2021년 1월 13일
0

https://min-blog.tistory.com/2774

장고문서
https://docs.djangoproject.com/ko/3.1/

  • 장고 설치과정
    apt update : 업데이트
    apt install python3 : 파이썬 설치
    apt install python3-pip : 패키지 관리 모듈 설치
    pip3 install django : pip로 장고 패키지 설치
    python3 -m django --version : 장고 버전 확인
    django-admin startproject 프로젝트이름

  • 서버 설정/실행
    우리가 제한하고자 하는 호스트를 등록하거나 모두를 받아들일 수도 있다.
    vi settings.py 파일에 가서 ALLOWED_HOSTS = ["*"] 로 변경
    python3 manage.py runserver 0.0.0.0:8000

  • 앱 등록하기
    프로젝트 최상단 폴더에서 앱을 만들어야 한다.(manage.py가 있는 위치)
    django-admin startapp 앱이름
    settings.py INSTALLED_APPS 앱등록
    python3 manage.py migrate ----------------- 앱구조 DB 등록

  • 삭제
    rm -rf 지울 폴더명

  • 장고 내의 모델 만들기
    vi models.py
    class Members(models.Model):
    CharField는 문자를 입력받는 필드이다.
    verbose_name은 필드명이 복잡하더라도 사용가능하도록 별명을 붙임
    username = models.CharField(max_length=30, verbose_name="name")
    password = models.CharField(max_length=30, verbose_name="pass")

  • 장고 디비 관리
    python3 manage.py makemigrations ----------------- 0001_initial.py 디비 형상관리
    언제든 0001_initial.py 형태로 되돌릴 수 있는 디비 형상
    python3 manage.py makemigrate

장고는 admin을 기본으로 제공합니다.
관리자페이지에서 CRUD를 할 수 있음.
python3 manage.py createsuperuser
접속은
아이피:포트/admin

  • 마지막 보고서 작성:admin.py를 건들여야 한다.

  • admin.py는 앱마다 생긴다.
    vi 앱이름/admin.py

    내가 model에서 정의한 함수명으로 등록
    from .models import member_db
    admin.site.register(member_db)


    하면 서버단에 member을 추가할 수 있는 카테고리가 추가된다.

  • 장고 서버에 html 띄우기

    프로젝트안의 프로젝트로 들어간다.
    그리고 우리는 장고에게 전체적으로 프로젝트가 어떻게 되는지를 알려주어야 한다.
    vi urls.py

    가보면 위와 같이 작성되어 있는데 여기에서 admin이라는 것이 입력되어 있어서 우리도 admin 페이지로 들어갈 수 있다.
    이 페이지에서 우리가 원하는 주소별로 이동하는 모델을 선택할 수 있게 된다.
    앱 마다 urls.py를 만들 수도 있다.


    하면 에러가 난다...

그래서 일단 에러가 나지 않게 만들기 위해

from django.urls import path,include
path('cu/',include("customer.urls"))
를 쳐주자

from django.urls import path, include(폴더 추가!!)
path( "", include( "first_app.urls" ) )

  • urls.py 만들기
    이제 우리가 만든 모델이 있는 폴더로 이동해서 urls.py 파일을 만들고 아래의 코드를 치자
    vi 앱이름/urls.py ----------------- 최초에 없음
    from django.urls import path
    from django.urls.resolves import URLPattern
    from . import views
    urlpatterns = [
    path( "", views.index, name="index" )
    ]
    views는 바꾸면 안되고, index는 views 안에 함수로 만들어 주어야 한다. name="index"는 그냥 이름이다.

    정리하면 customer앱 urls.py 에서 test->view의 index 함수를 찾아가라
    이러면 우리는 cu/test 로 접속하게 된다.

다시 또 같은 폴더 안에서 views.py 를 건들어 주어야 한다.
vi 앱이름/views.py ----------------- 최초에 없음
from django.http import HttpResponse
from django.
def index( request ):
return render(request, "파일.html" )
views에 있는 index 함수를 호출해주라

이제 또 템플릿 폴더를 만들어 주어야 한다.

mkdir templates
templates 폴더 안에 html 파일.html 생성

기타 리눅스 명령어

$ netstat -np | grep 8000
내 서버에서 8000포트로 열린 무언가가 있어?
$ kill -9 프로세스아이디
프로세스 죽이기
$ ps -ef | grep python*
python이란 이름 하에 돌아가는 프로세스가 있으면 다 보여줘


데이터베이스 모델링

데이터베이스는 설계부터 중요

  • 분석

  • 개념적 모델링
    ERD(Entity Relation Diagram) 만들기 : Entity와 관계를 설계

  • 논리적 모델링
    실제 데이터베이스에 어떻게 구현해야할지를 고민하는 단계

    작성할때 반드시 PK(기본키), FK(외래키) 작성하기
    PK는 튜플을 분간하는 용도
    FK는 외부 테이블에서 데이터를 기준으로 사용하기에 명시화. 외래키는 가급적 기본키로 사용.

그래서 PK를 하나로만 사용해야만 안전하게 서버를 관리할 수 있다.

  • 물리적 모델링

장고 MTV에 대하여
파이썬 - 장고(MTV)
php - 코드이그나이터(MVC)

M:model(데이터베이스와 연동하는 부분)
T:template(사용자에게 보여주기 위한 양식)
V:view(M과 통신하기도 하고, T에 내용물을 채우기도 하는 제어자)

https://butter-shower.tistory.com/49

urls 가 뷰로 가고
뷰에서 모델로 가서 데이터베이스를 참조해 결과를 가지고 온다.
템플릿은 마지막으로 사람들에게 보여줄 부분만을 보여준다.

장점
업무 분담이 된다.
중복된 코드를 최소화 할 수 있어서 효율적임
유지보수가 쉽다.

장고에서는 db를 어떤 것을 사용하는가에 상관없이 ORM(Object Relational Mapping)을 통해서 장고가 알아서 사용하는 데이터베이스에 삽입해준다.

실재 우리 프로젝트의 settings에 가보면 위와 같이 데이터베이스가 작성되어 있는 것을 확인할 수 있다.

profile
신촌거지출신개발자(시리즈 부분에 목차가 나옵니다.)

0개의 댓글