이전에 가상환경과 장고 프로젝트 생성까지 완료하였다. 이번에는 mainpage App을 구축하고 ERD를 토대로 Model migraion을 진행할 것이다.
장고 mainpage App 구축
mainpage App 연동
로컬 페이지에서 mainpage를 띄우기 위한 작업을 하나씩 진행한다.
mainpage App 생성
아래의 명령어를 실행하면 아래 사진과 같이 mainpage App이 생성된다.
python manage.py startapp mainpage
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!"가 출력된 것을 확인할 수 있다.
Model 생성
이전에 계획서에 작성했던 ERD를 토대로 model을 구축하고, migration을 진행하였다.
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
git push
git add .
git commit -m "feat: add mainpage app, Competion model"
git push origin main
다음에는 본격적으로 스크래핑 작업을 진행할 것이다. 여러 개의 사이트 중 링커리어 스크래핑을 진행한다.
'프로젝트 단위 공부 > [개인 프로젝트] 공모전 크롤링' 카테고리의 다른 글
[개인 프로젝트] 공모전 크롤링 (6) - 데이터 수집 (스크래핑) - 씽굿 (2) | 2024.05.01 |
---|---|
[개인 프로젝트] 공모전 크롤링 (5) - 데이터 수집 (스크래핑) - 위비티 (2) | 2024.05.01 |
[개인 프로젝트] 공모전 크롤링 (4) - 데이터 수집 (스크래핑) - 링커리어 (0) | 2024.04.29 |
[개인 프로젝트] 공모전 크롤링 (2) - 가상환경 및 초기 설정, git remote (0) | 2024.04.27 |
[개인 프로젝트] 공모전 크롤링 (1) - 계획서 (0) | 2024.04.25 |