반응형
https://github.com/syujisu/Django_instagram

 

초기 설정

photo app 생성

모델 설계

<초기 설정>

- 가상환경 생성
$ python -m venv myvenv

- 가상환경 실행
$ source myvenv/Scripts/activate
(myvenv) 

 

-장고 설치 
$ pip install django 

 

- 프로젝트 시작
$ django-admin startproject config
(myvenv) 


- DB 초기화 (project 상단 이름을 바꿔줍니다 -> instagram)

$ cd instagram

$ python manage.py migrate

 

 

 

<photo app>

- app 생성(/instagram)

$ python manage.py startapp photo

 

- settings.py에 installed app에 photo 추가해주기

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'photo.apps.PhotoConfig'
]

 

- photo model 생성(/instagram/photo/models.py)

class Photo(models.Model):
    author = models.ForeignKey(User, on_delete=models.CASCADE, related_name='user')
    #장고에서 구현하는 user 불러와 photo를 fk로 연결
    text = models.TextField(blank=True)
    image = models.ImageField(upload_to = 'timeline_photo/%Y/%m/%d')
    #timeline_photo 폴더에 연, 월, 일 만들어 사진 저장
    created = models.DateTimeField(auto_now_add=True)
    updated = models.DateTimeField(auto_now=True)

    def __str__(self):
        return "text : " + self.text
        #admin 사이트 화면 표시 구현 

    class Meta:
        ordering = ['-created']
        #ordering 정렬

 

-settings.py 에서 media 루트 설정 (/instagram/config/settings.py)

STATIC_URL = '/static/'



MEDIA_URL = '/res/'

MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
#MEDIA_URL 을 설정하고 ROOT를 잡아주어서 저기로 사진이 저장되도록 한다.

 

-모델 설계 이후 migration

  1. Image파일을 업로드 하기 위해 pip install Pillow를 해줘야 한다.
    1. pip install Pillow
  2. python manage.py makemigrations photo
  3. python manage.py migrate

-admin site 등록(/instagram/photo/admin.py)

from django.contrib import admin
from .models import Photo
# Register your models here.

admin.site.register(Photo)

 

- 확인해보기

$ python manage.py createsuperuser
Username (leave blank to use 'user'): admin
Email address: 282532@naver.com
Password: 
Password (again):
This password is too short. It must contain at least 8 characters.
This password is too common.
This password is entirely numeric.
Bypass password validation and create user anyway? [y/N]: y
Superuser created successfully.
  1. python manage.py runserver (기본값은 8000 포트 입니다)
  2. 해당 링크의 /admin으로 이동하여 글 등록해보기

admin 사이트
사진 올려서 이렇게 나오면 완성 :)

반응형

'Web > Django' 카테고리의 다른 글

[Django] Instagram 클론 코딩(2)  (0) 2020.03.19
[Django_심화]4 - (1)pagination  (0) 2020.03.18
[Django_심화]3 - viewset & router  (2) 2019.11.03
[Django_심화]2 - Rest, Serializer  (0) 2019.11.03
[Django_심화]1 - 준비운동  (0) 2019.11.02

+ Recent posts