[개인 프로젝트] 공모전 크롤링 (3) - mainpage (App 연동, Model 생성)

2024. 4. 27. 17:31·프로젝트 단위 공부/[개인 프로젝트] 공모전 크롤링

이전에 가상환경과 장고 프로젝트 생성까지 완료하였다. 이번에는 mainpage App을 구축하고 ERD를 토대로 Model migraion을 진행할 것이다.

 

[개인 프로젝트] 공모전 크롤링 (2) - 가상환경 및 초기 설정, git remote

이전에 공모전 크롤링을 진행할 계획을 마련하였다. 이번에는 프로젝트를 진행할 가상환경과 장고를 세팅하고, github와 연동하는 작업을 진행한다. [개인 프로젝트] 공모전 크롤링 (1) - 계획서

sanseo.tistory.com

장고 mainpage App 구축

mainpage App 연동

로컬 페이지에서 mainpage를 띄우기 위한 작업을 하나씩 진행한다.

mainpage App 생성

아래의 명령어를 실행하면 아래 사진과 같이 mainpage App이 생성된다.

python manage.py startapp mainpage

mainpage App 생성

moremore > settings.py

setting.py의 INSTALLED_APPS에 mainpage를 추가한다.

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'mainpage', # 추가
]

moremore > urls.py

include 라이브러리를 활용하여 mainpage의 path를 추가한다.

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('main/', include('mainpage.urls')), # 추가
]

mainpage > urls.py

mainpage에 urls.py를 새로 생성하고, app_name과 path를 추가한다. moremore의 urls.py에서 'main/'으로 지정했으므로 여기서 path를 지정하면 "http://127.0.0.1:8000/main/~"에서 ~부분에 들어가는 부분을 지정하는 것이다.

from django.urls import path
from mainpage import views

app_name = 'mainpage'

urlpatterns = [
    path('', views.index),
]

mainpage > views.py

mainpage의 urls.py에서 views.index를 path로 지정하였다. 이는 views.py의 index 함수의 경로를 나타낸 것이다. 따라서 views에 index 함수를 만들고 렌더링 하여 페이지에 띄워주는 작업을 할 수 있다.

from django.shortcuts import render

# Create your views here.
def index(request):
    return render(request, 'mainpage/index.html')

mainpage > templates > mainpage > index.html

mainpage에 templates 폴더를 생성하고, 그 안에 mainpage라는 폴더를 생성한다. templates/mainpage 폴더에 index.html 파일을 생성하고 페이지에서 보여줄 코드를 작성한다. 여기서는 테스트 용도로 "Hello world!"를 출력한다.

Hello world!

결과

지정했던 경로인 "127.0.0.1:8000/main/"에 올바르게 "Hello world!"가 출력된 것을 확인할 수 있다.

Hello world!

Model 생성

이전에 계획서에 작성했던 ERD를 토대로 model을 구축하고, migration을 진행하였다.

ERD

mainpage > models.py

platform, title, url은 CharField로 지정하였고 max_length를 설정해주었다. 또한 접수 시작 날짜와 마감 날짜를 DateTimeField로 지정하였다.

from django.db import models

# Create your models here.
class Competition(models.Model):
    platform = models.CharField(max_length=50)
    title = models.CharField(max_length=100)
    url = models.CharField(max_length=100)
    application_start = models.DateTimeField()
    application_end = models.DateTimeField()

makemigrations -> migrate

이후 아래의 명령어를 실행해 migration을 해주었다. 만약 이를 진행하지 않으면 모델이 적용되지 않으므로 주의해야 한다. 올바르게 진행되면 아래의 사진처럼 모델이 생성되었음을 알려준다.

python manage.py makemigrations
python manage.py migrate

migration

git push

git add .
git commit -m "feat: add mainpage app, Competion model"
git push origin main

다음에는 본격적으로 스크래핑 작업을 진행할 것이다. 여러 개의 사이트 중 링커리어 스크래핑을 진행한다.

 

[개인 프로젝트] 공모전 크롤링 (4) - 데이터 수집 (스크래핑) - 링커리어

이전에 mainpage app 생성 및 로컬 페이지에서 접속 가능하도록 코드를 작성하였고, ERD를 바탕으로 models를 생성하였다. 이번에는 스크래핑을 통해 데이터 수집을 진행할 것이다. 여러 개의 사이트

sanseo.tistory.com

 

'프로젝트 단위 공부 > [개인 프로젝트] 공모전 크롤링' 카테고리의 다른 글

[개인 프로젝트] 공모전 크롤링 (6) - 데이터 수집 (스크래핑) - 씽굿  (2) 2024.05.01
[개인 프로젝트] 공모전 크롤링 (5) - 데이터 수집 (스크래핑) - 위비티  (2) 2024.05.01
[개인 프로젝트] 공모전 크롤링 (4) - 데이터 수집 (스크래핑) - 링커리어  (0) 2024.04.29
[개인 프로젝트] 공모전 크롤링 (2) - 가상환경 및 초기 설정, git remote  (1) 2024.04.27
[개인 프로젝트] 공모전 크롤링 (1) - 계획서  (0) 2024.04.25
'프로젝트 단위 공부/[개인 프로젝트] 공모전 크롤링' 카테고리의 다른 글
  • [개인 프로젝트] 공모전 크롤링 (5) - 데이터 수집 (스크래핑) - 위비티
  • [개인 프로젝트] 공모전 크롤링 (4) - 데이터 수집 (스크래핑) - 링커리어
  • [개인 프로젝트] 공모전 크롤링 (2) - 가상환경 및 초기 설정, git remote
  • [개인 프로젝트] 공모전 크롤링 (1) - 계획서
기억에 남는 블로그 닉네임
기억에 남는 블로그 닉네임
  • 기억에 남는 블로그 닉네임
    얕게, 깊게
    기억에 남는 블로그 닉네임
  • 전체
    오늘
    어제
  • 블로그 메뉴

    • 홈
    • 방명록
    • 글쓰기
    • 분류 전체보기
      • Data Engineering
        • Airflow
        • 빅데이터
        • 자동화
        • 기타
      • Infra
        • AWS
        • Terraform
        • [인프라 구축기] Terraform 활용 AWS ..
      • CS
        • 자료구조
        • 알고리즘
        • 네트워크
        • 데이터베이스
        • 이것이 취업을 위한 코딩 테스트다 with 파이썬
      • Python
      • Web
      • Git
      • 기타
        • 취업 & 진로
        • 회고록
        • 기타
      • 프로젝트 단위 공부
        • [부스트코스] DataLit : 데이터 다루기
        • [개인 프로젝트] 공모전 크롤링
        • [개인 프로젝트] FC Online 공식 경기 분..
        • 프로젝트 개선 방안
      • [프로그래머스] 데이터 엔지니어링 데브코스 3기
        • TIL(Today I Learn)
        • 숙제
        • 기타
      • 알고리즘 연습
        • 프로그래머스
        • 백준
  • 링크

    • 깃허브
    • 링크드인
  • 인기 글

  • 최근 글

  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.3
기억에 남는 블로그 닉네임
[개인 프로젝트] 공모전 크롤링 (3) - mainpage (App 연동, Model 생성)
상단으로

티스토리툴바