url에서 인자 받기
우리가 게시판을 만든다고 생각을 해보자 게시물을 하나를 작성한다면 게시판 내용에 맞는 urls.py, view.py, html을 만들고 수정해 줘야 한다. 여러 개의 게시물이 작성된다면 우리는 것들을 하나하나 만들어서 urls, views, html을 만들어 준다고 생각하면 너무 비효율적이다.
그래서 이 방법을 해결하기 위해 도통적으로 들어오는 내용들을 인잘로 받아 처리하는 pathern을 정의해 주면 된다.
path('post/<str:내용>/', views.보내는 곳)
이런 식으로 받아와 views.py에서는
def post(request,내용)
context = {'내용': 내용}
return render(request, post.html, context)
이런 식으로 작성해서 정의해서 사용하면 된다.
app 분리하기
지금까지는 다양한 기능들을 사용하려면 주 project의 urls.py에 정의해줬다.
하지만 각각 app안에서 urls, view를 정의해 준다면 유지보수도 편하고 보기에도 깔끔할 것이다.
app 생성하기
python manage.py startapp <your app name>
앱을 생성하면 꼭꼭 settings에 가서 등록을 해줘야 한다!!
각 app에 가서 urls.py 파일을 만들어 줘야 한다. 그래야 기능적인 부분들을 나눠서 관리하기 위해서 이다.
from django.urls import path
from . import views
urlpatterns=[
]
project에 있는 urls.py의 내용을 그대로 사용해도 좋다.
위 코드의 설명은 path 함수를 사용하기 위해서고 viesw와 연결하기 위해서 사용하며 urlpatterns는 꼭 있어야 하는 내용이다.
urls.py 이도 정의 해주고 templates 파일도 만들어 주고 views.py내용도 적어주면 끝!! 이 아니다 ㅎ
여러 app들을 projext의 urls.py와 연결을 해줘야 기능을 한다.
path('app_name/', include('app_name.urls'))
이런 식으로 작성을 해주야 한다.
include가 뭐지?라고 의문은 생긴다면
https://docs.djangoproject.com/en/4.2/ref/templates/builtins/#built-in-filter-reference
우리의 성격 django 공식문서를 봐야 한다. (난 아 그렇구나 하고 넘어갔다ㅎ)
그리고 다음으로 중요한 것은 바로 include('app_name.urls')로 넘어간다면 app_name.urls의 내용을 수정해 줘야 한다.
app_name/app_name/<내용>
이런 식으로 두 번씩 검색이 되는 구조이다. 그래서 기존에 작성된 app_name.urls에서
app_name/<내용> -> /<내용>
으로 수정을 해야 실행이 된다.
마무리
Django의 기초적인 부분들을 배우고 있다. 점점 django라는 도구를 사용해서 내가 할 수 있는 것들이 늘어나고 있어 관심이 많이 간다.
다음 강의부터는 model 부분 데이터베이스를 이용하는 방법을 배우는데 기대가 된다. 기존에 만들고 있다 게시판 웹사이트도 django를 이용해서 다시 만들면 좋을 거 같다.