코딩공부/Python Django

KKU likelion django project (1)

integerJI 2020. 1. 2. 11:38

---
title: "LikeLion KKU 첫  Review"
date: 2019-10-04 00:00:00 -0400
categories: jekyll update
---

# 안녕!
오랜만에 코딩을 하여 어려워할 여러분들에게
이 글들은 수정 예정! 또한 블로그도 리뉴얼될 예정입니닷
오타와 맞춤법은 후에 수정할게요!


## 사전작업
vscode에서 해당하는 폴더를 열어줍니다.
'파일 -> 폴더 열기'

vscode에서 `ctrl` + `shift` + `~`를 눌러 명령창(터미널)을 열어줍니다.

## python –m venv 가상환경명
```python –m venv myvenv```

위의 명령어를 치고 나면 myvenv라는 가상환경 폴더가 생성됩니다.
가상환경명은 아무거나 정할 수 있지만 보통 `myvenv`나 `venv`같은 네이밍을 사용한다고 합니다.
복잡하게 지으면 명령어를 칠 때 헷갈리게 되어 힘듭니다.

## 가상환경 실행하기
```source myvenv/Scripts/activate```

가상환경을 설치하였다면 실행해주면 됩니다.
(`source` 대신 `.` 을 입력해도 된다고 합니다.)

가상환경머신이 켜진다면 `(myvenv)` 란개 생깁니다. 그렇다면 가상환경이 실행되었다는 뜻입니다.
이는 자신의 가상환경 머신이름입니다. 

## django개발을 할 때는 무조건! 가상환경부터 키고 시작한다.

## 가상환경끄기
가상환경을 끄려면 vscode 혹은 명령창을 꺼도 되지만 명령창에서 `ctrl` + `c`를 눌러도 꺼집니다.
혹은 `deactivate`

## django 설치하기 

(가상환경이 켜진 상태여야 합니다.)
```pip install django```
특정 버전을 설치하려면 pip install django==2.1.8 등 있습니다.

여기서 pip란 파이썬 관련 패키지 (누군가가 만들어 놓은 파이썬 프로그램들)를 설치하기 위해 사용되는 명령어입니다.
install 은 설치하라는 것이며 uninstall는 삭제하라는 명령어입니다.

django까지 설치가 되었다면 프로젝트를 시작하여 봅시다.

## project 시작하기
```django-admin startproject postproject```
django-admin을 이용하여 project를 생성합니다.

생성하였으면 postproject란 폴더 안에 postproject가 또 있습니다.

제일 최상단에 있는 폴더 postproject를 project로 안 헷갈리게 바꿔줍니다.

후 명령창에 `cd project` 명령어를 입력하여 현재 위치를 project로 이동하여줍니다.

## app 만들기
```python manage.py startapp postapp```

project에 들어왔다면 app을 만들어 줍시다. 그렇다면 project폴더에는 app과 project가 있습니다.

## app을 만들면 해야 할 것

app 안에 templates란 폴더를 만들어줍니다. `s` 주의 

`templates` 폴더 안에 `home.html`을 만들어 줍니다.

`views.py`에 함수를 설정하여 줍니다.

```
def home(request):
return render(request, ‘home.html’)
```

이제 `project`에 있는 셋팅으로 들어갑니다.
`INSTALLED_APPS` 안에 app이 생성되었단 걸 알려줍니다.

```'postapp.apps.PostappConfig',```

postapp이란 폴더 안에 있는 apps란 파일 안에 있는 PostappConfig란 함수를 가져옵니다.
주의해야 할 점은 ‘’ 끝에 있는 `,`입니다.

그리고 url을 연결해 줍니다. 

`project`안에 있는 `urls.py`에 들어가

```import postapp.views```

포스트 앱에 있는 뷰스를 임폴트 해줍니다.

또한 urlpatterns에 path를 추가해줍니다.

```path(‘’, postapp.views.home, name=’home’),```

## django 서버 실행하기

```python manage.py runserver```
를 명령창에 쳐서 home.html에 내용이 나오나 확인합니다.

## model 만들기
model을 만들어 봅시다. model은 어디서 들어봤을 데이터베이스(DB)라는 것이 이 model을 의미합니다.

먼저 3개만 넣어서 model을 만들어 봅시다.

`제목` `본문` `작성일자`

post를 적기 위하여 필요한 제목과 본문 그리고 작성일자입니다. 그러므로 postapp에 있는 model을 사용합니다.

```class Post(models.Model):
    title = models.CharField(max_length=200)
    pub_date = models.DateTimeField('date published')
    body = models.TextField()
```
이와 같이 코드를 입력합니다. class 명을 지을 때에는 꼭 첫 글자를 대문자로 지으세요. 이건 개발자 간의 약속입니다.

코드를 설명해 보자면

```
1. title 속성은 최대 length가 200인 문자열로 형성할 거야.
2. pub_date 속성은 날짜와 시간으로 형성할 거야.
3. body 속성은 긴 문자열로 형성할 거야.
```

Post란 붕어빵 틀을 만든다는 걸 저번에 말했던 거 기억할 것입니다.

이 붕어빵 틀에 다양한 정보를 넣어 팥 붕어빵, 슈크림 붕어빵, 고구마 크림 붕어빵 등 다양하게 만들 수 있는 틀을 만든 것입니다.

위와 같이 model을 작성했으면 이제 `python manage.py`로 추가적인 명령을 내려줘야 합니다. 이건 기억하고 갑시다. model을 만들고 싶다면..

```
1. `models.py`에서 코드 작성
2. `python manage.py makemigrations` 을 통해 migration 만들기
3. `python manage.py migrate` 을 통해 데이터베이스에 적용하기
```

migration란 django는 DB(데이터베이스)를 지원하지 않습니다. 그래서 우리가 내린 python코드를 DB가 알아듣게 설명을 해 줘야 하는 작업이 필요합니다. 위의 makemigrations는 내가 짠 파이썬 코드를 DB가 알아들을 수 있게 번역하는 명령어이고, migrate는 DB에 그 내용을 적용하라는 명령어입니다.

그렇다면 무슨 DB를 쓰느냐?
셋팅에 77번째 줄 (다를 수 있습니다.)
DATABASES를 보면 sqlite3을 사용하는 것을 볼 수 있습니다.

## admin페이지
자. 이제 뭘 만들었으면 잘 만들어졌는지 아닌지 확인을 해야 하는데 어떻게 확인을 해야 할까요. 게시글을 직접 등록해 보면 되겠네요. 이럴 때 유용하게 쓸 수 있는 중요한 사이트가 있습니다. 바로 admin 페이지죠.
admin 페이지는 사이트 관리자가 콘텐츠를 편집할 수 있는 통합적인 인터페이스를 제공합니다. 물론 사용 목적에 따라 수정해야 할 일이 다분하지만, 제공해주는 것이 어딥니까. 사이트 관리자를 위한 페이지. 즉, 여러분을 위한 공간입니다.

127.0.0.1/admin 으로 접속하면 admin 페이지가 나옵니다.

하지만 그전에 admin 계정을 만들어줘야 합니다.

## admin 만들기
```python manage.py createsuperuser```

admin을 만드는 명령은 createsuperuser입니다. 슈퍼유저를 만들라고 명령을 내리면 아이디와 이메일 주소, 비밀번호를 입력하라는 내용이 터미널에 나옵니다.

신중하게 작성하도록 합시다. (password 입력 시 아무것도 안 나오는 것 같아도 당황하지 맙시다. 보안상의 이유로 보이지 않을 뿐 키보드는 정상 작동합니다.)

작성을 열심히 했으면, 만든 아이디와 비밀번호를 가지고 웹페이지로 돌아가 로그인해봅시다.

## admin에 model 등록하기

postapp 폴더 안으로 들어가 보면 admin.py라는 파일이 있습니다.

안에 두줄을 추가해 줍시다.

```
from .models import Post

admin.site.register(Post)
```

첫째줄은 '같은 폴더 위치에 있는 models라는 파일에, Post라는 클래스를 가져오라'는 소리고, 맨 밑에 줄은 'admin이라는 site에 Post라는 클래스를 등록해라'라는 말입니다.

이제 admin계정으로 로그인을 하면 

Post란 붕어빵 틀이 만들어진 걸 볼 수 있게 됩니다.

하지만 아직 완성된 게 아닙니다.

글을 작성하여 보면 `Post object(1)`이라는게 생겼습니다.

이는 게시글이 작성된 순서로 저장되는 1번째 게시글이라고 생각하면 됩니다.

하지만 우리는 게시글의 번호가 아닌 무슨 게시물인지 보고 싶습니다.

이를 위하여 model class 아래에

```
class Post(models.Model):
    title = models.CharField(max_length=200)
    pub_date = models.DateTimeField('date published')
    body = models.TextField()

    def __str__(self):
        return self.title
        
```

두줄을 추가해줍시다.

이는 title를 보여주란 함수입니다. 이는 pub_date가 될 수도 있고 body가 될 수도 있습니다.

두줄을 추가해 준 뒤 저장을 해줍니다.

왜 마이그레이션은 안 하나요?

마이그레이션은 붕어빵 틀을 전부 바꿔야 할 때 혹은 새로운 틀을 만들었을 때에만 사용합니다.



- 안녕

>- 잘 작동될까요?

You’ll find this post in your `_posts` directory. Go ahead and edit it and re-build the site to see your changes. You can rebuild the site in many different ways, but the most common way is to run `jekyll serve`, which launches a web server and auto-regenerates your site when a file is updated.

To add new posts, simply add a file in the `_posts` directory that follows the convention `YYYY-MM-DD-name-of-post.ext` and includes the necessary front matter. Take a look at the source for this post to get an idea about how it works.

Jekyll also offers powerful support for code snippets:

​```python
def print_hi(name):
  print("hello", name)
print_hi('Tom')
​```

Check out the [Jekyll docs][jekyll-docs] for more info on how to get the most out of Jekyll. File all bugs/feature requests at [Jekyll’s GitHub repo][jekyll-gh]. If you have questions, you can ask them on [Jekyll Talk][jekyll-talk].

[jekyll-docs]: https://jekyllrb.com/docs/home
[jekyll-gh]:   https://github.com/jekyll/jekyll
[jekyll-talk]: https://talk.jekyllrb.com/

'코딩공부 > Python Django' 카테고리의 다른 글

KKU likelion django project (3)  (0) 2020.01.02
KKU likelion django project (2)  (0) 2020.01.02
KKU likelion rest project (4)  (0) 2019.10.28
KKU likelion rest project (3)  (1) 2019.10.28
KKU likelion rest project (2)  (0) 2019.10.27