mkdir esg-a-django-test
cd esg-a-django-test
python -m venv venv
source venv/bin/activate
python -m pip install --upgrade pip wheel
python -m pip install "django~==4.1.0"
python -m django --version
python -m django startproject mysite .
code .
.gitignore
db.sqlite3
__pycache__
venv
( git init )
git branch
git add .
git config --global user.email "깃허브에 셋팅한 이메일 주소me@pyhub.kr"
git add .
git status
git commit -m "initial commit"
git status
git log
git remote -v
파일 넣지 말고 생성
git remote add origin git@ ........... 이거 복붙하기
git remote -v
git push origin main
command+p 해서
python: select interpreter 입력해
가상환경이랑 연결해 셋팅해주기.
python .\manage.py startapp blog 그러면 폴더 생성됨.
settings.py 파일에 installed_apps 에 'blog', 를 추가해줘야함.
models.py 파일에
class Post(models.Model):
title = models.CharField(max_length=30)
content = models.TestField()
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
함수형은 def my_post
클래스명은 class MyPost
python .\manage.py makemigrations blog
python .\manage.py sqlmigrate blog 0001_initial
python .\manage.py migrate blog
python .\manage.py showmigrations 그러면 적용안된 migrations 파일이 많음.
그러면 python .\manage.py migrate 해서 한번에 모든 파일 migrate 해줘라.
VSCODE terminal에서 python .\manage.py cratesuperuser 해서 아이디 비번 생성
from blog.models import Post
admin.site.register(Post) 그러면 admin 에 post 페이지 생성됨.
모든 내용이 여기 request에 저장됨.
def index(request):
""" 포스팅 목록 페이지 HTML을 반환""" #""" """ 은 문자열이다.
return render(request, "blog/index.html")
def post_detail(request, pk):
""" 특정 pk 포스팅 페이지 HTML을 반환"""
참고)
def post_detail(request):
pass
blog > templates > blog > index.html 파일 생성
! tap 해서 기본적인 코드 자동생성 후 수정해주기.
(1)
blog > urls.py 파일 생성해주기.
view 함수 호출되려면 urls.py 정의가 필요하다.
from django.urls import path
from blog import views
urlpatterns = [
path("", vies.index),
path("<int:pk>/", views.post_detail),
]
(2)
mysite > urls.py 파일로 가서
path 뒤에 include 도 입력해주기
blog 도 include 해주기
그러면 홈페이지에 로켓 화면 없어지고 page not found 로 변경됨.
localhost8000/blog 로 주소 입력해서 들어가보기.
from blog.models import Post 추가
post_qs = Post.objects.all().order_by("-pk") 추가
{ "post_list":post_qs } 추가
{ % for post in post_list % }
해당 홈페이지에서 '페이지 소스 보기'를 통해 결과를 확인해보기. (debugging)
ex) locallhost8000/blog/1
def post_detail(request, pk): 에 리턴값이 없다.
( post = Post.objects.get(pk=pk)
return render(request, .... )
index.html 파일 생성한 곳과 같은 위치에 post_detail.html 파일 생성
{{post.content}}
<a href="blog/"> 포스팅 목록 </a>
{{ post.pk }}
git add blog
git commit -a -m "구현"
git push
git push -u origin main