장고요놈 복습 5 w/ (MAC OS)

Soyoung Park·2022년 10월 27일
0

TIL web

목록 보기
16/18
post-thumbnail

복습

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 .

VSCODE

.gitignore

db.sqlite3
__pycache__
venv

vscode terminal

( 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

github 에 빈저장소 만들기

파일 넣지 말고 생성
git remote add origin git@ ........... 이거 복붙하기
git remote -v
git push origin main

VSCODE

command+p 해서
python: select interpreter 입력해
가상환경이랑 연결해 셋팅해주기.

VSCODE terminal

python .\manage.py startapp blog 그러면 폴더 생성됨.

settings.py

settings.py 파일에 installed_apps 에 'blog', 를 추가해줘야함.

models.py

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

VSCODE terminal

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 해줘라.

locallhost8000/admin

VSCODE terminal에서 python .\manage.py cratesuperuser 해서 아이디 비번 생성

blog > admin.py

from blog.models import Post

admin.site.register(Post) 그러면 admin 에 post 페이지 생성됨.

blog > views.py

모든 내용이 여기 request에 저장됨.

def index(request):
	""" 포스팅 목록 페이지 HTML을 반환"""    #""" """ 은 문자열이다.
    return render(request, "blog/index.html")
	
    
def post_detail(request, pk):
	""" 특정 pk 포스팅 페이지 HTML을 반환"""

참고)

def post_detail(request):
	pass

Requests

Requests


파일 생성

blog > templates > blog > index.html 파일 생성
! tap 해서 기본적인 코드 자동생성 후 수정해주기.

urls.py

(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


0개의 댓글