반응형
스파르타 코딩클럽 내일배움캠프 AI 웹개발자양성과정 3회차
2022.09.27. 20일차 - TIL
1. Django 타임어택
- 파이참의 프로젝트 자동 생성 기능없이 명령어로만 장고 프로젝트 만들기
- 프로젝트에 사용할 폴더를 생성하고, 편집기(vscode or pycharm)에서 폴더 열기
- 파이썬 가상 환경을 생성하기
python -m venv venv - 파이썬 가상 환경을 활성화하기(windows)
venv\scripts\activate
deactivate(비활성화 명령어) - django 패키지 설치하기
pip install django - .gitignore 파일을 생성하고 venv 추가(repository에 굳이 올리지 않기 위해)
- https://www.toptal.com/developers/gitignore 에서 적절한 gitignore 생성
- Django 부분에 venv 추가 - git으로 repository에 올리기 -> venv가 안 올라가는지 확인
- repository 생성하기
- git init : 현재 디렉터리 기준으로 git 저장소 생성
- git remote add origin 깃주소 : remote repository를 origin이라는 이름으로 등록
- git add . : 모든 파일 git stage 추가.
- git commit -m "commit message" : stage 추가된 파일 commit
- git push -u origin main : origin(원격저장소 별칭)에 존재하는 branch로 로컬의 branch를 push(u는 업스트림) - spartatest라는 django 프로젝트 생성하기
django-admin startproject spartatest . - introduce라는 앱을 생성하기
python manage.py startapp introduce - settings.py의 INSTALLED_APPS에 'introduce' 추가
- introduce/templates 경로에 간단한 자기소개를 적은 탬플릿 html 작성
- introduce 앱 아래 templates 폴더 생성 후 index.html 페이지 생성 - 127.0.0.1:8000/introduce/ 경로에 페이지에 접속했을 때 자기소개 페이지가 보일 수 있도록 설정
- spartatest의 urls.py에 path('', include('introduce.urls')), 추가 -> 현재경로에서 introduce앱의 urls.py에 연결(introduce/urls.py 파일에 있는 URL 매핑을 참고하여 처리)
- introduce 앱의 urls.py에 path('introduce/', views.introduce_view), 추가 -> introduce/ 경로로 시작되는 페이지 요청은 introduce/views.py에 정의되어있는 introduce_view 함수 호출
- introduce 앱의 views.py에 introduce_view 함수를 정의해 return render(request, 'index.html') 추가
- models.py에 AccessLog 테이블 생성(introduce의)
- created_at : 데이터가 생성된 시간을 알 수 있도록 datetimefield 사용
- location : 사용자가 어떤 templateㅇ 접근했는지 알 수 있도록 charfield 사용
from django.db import models
class AccessLog(models.Model):
class Meta:
db_table = "AccessLog" # 테이블 이름
location = models.CharField(max_length=256, default='')
created_at = models.DateTimeField(auto_now=True)
- 생성된 테이블을 makemigrations/migrate 명령어를 통해 db에 반영
python manage.py makemigrations -> 모델 변경을 db에 알림
python manage.py migrate -> 해당 변경을 db에 반영 요청 - 생성한 테이블을 admin.py에 등록해주기
from django.contrib import admin
from .models import AccessLog
# admin에 AccessLog 테이블 등록
admin.site.register(AccessLog)
- 사용자가 introduce 페이지에 접속했을 때, 접속 로그 남기기 -> index.페이지를 렌더링할 때마다 AccessLog을 생성하고, 저장
- admin 페이지에서 언제, 어떤 페이지에 접속했는지 알수 있도록 표현
- 로그를 저장할 때 어떤 템플릿을 조회했는지 확인
# introduce/views.py
from django.shortcuts import render
from .models import AccessLog
def introduce_view(request):
accesslog = AccessLog() # 모델 인스턴스 생성
accesslog.location = 'introduce'
accesslog.save() # 헤딩 모델 인스턴스 저장
return render(request, 'index.html')
# created_at은 자동 저장, readonly라 admin에서 안 보이는 것 뿐
# 따라서 admin에서 보이게 하려면 admin.py 수정
# introduce/admin.py
from django.contrib import admin
from .models import AccessLog
# admin 페이지를 커스터마이징
class AccessAdmin(admin.ModelAdmin):
list_display = ('location', 'created_at',)
admin.site.register(AccessLog, AccessAdmin)
- admin 페이지에 접속해서 접속 기록 확인하기
python manage.py createsuperuser : admin 계정 생성
python manage.py runserver : django 서버 실행
2. Django 원격 강의
- 로그인 후 페이지 이동하기
- templates 폴더 아래 tweet 폴더를 만들고 home.html 작성
- 이동 페이지 연결하기 -> views.py의 함수를 작성하고, urls.py에 연결
# tweet/views.py
from django.shortcuts import render, redirect
def home(request):
# 사용자가 로그인했는지 검사
user = request.user.is_authenticated
if user: # 로그인했다면
return redirect('/tweet')
else: # 로그인하지 않았다면
return redirect('/sign-in')
def tweet(request):
if request.method == 'GET':
return render(request, 'tweet/home.html')
# tweet/urls.py
from django.urls import path
from . import views
urlpatterns = [
# 127.0.0.1:8000 과 views.py 폴더의 home 함수 연결
path('', views.home, name='home'),
# 127.0.0.1:8000/tweet 과 views.py 폴더의 tweet 함수 연결
path('tweet/', views.tweet, name='tweet'),
]
# mySpartaSns/urls.py 수정
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('user.urls')),
# 해당 파일에서 url 경로를 설정해주고 있음을 django엑 알림
path('', include('tweet.urls'))
]
반응형
'개발일지 > AI 캠프' 카테고리의 다른 글
내일배움캠프 AI - 22일차 TIL, 2022.09.29 (0) | 2022.09.30 |
---|---|
내일배움캠프 AI - 21일차 TIL, 2022.09.28 (0) | 2022.09.29 |
내일배움캠프 AI - 19일차 TIL, 2022.09.26 (0) | 2022.09.27 |
내일배움캠프 AI - 4주차 WIL (0) | 2022.09.26 |
내일배움캠프 AI, 18일차 TIL - 2022.09.23 (0) | 2022.09.26 |