---
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 |