HTML 템플릿 및 보기 만들기 | Django CMS 빌딩 By shriekdj

이 게시물에서는 사이트에 대한 Html 페이지를 만들고 urls.pyviews.py 사용 방법을 보여줍니다.

먼저 django 앱의 templates 앱에 blog라는 폴더를 만들고 아래와 같이 django_project_name/setting.py의 변수 업데이트를 추가합니다.

import os # add it at the top of settings.py

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'templates')], # at here add templates folder
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

아래와 같이 index.html를 생성합니다.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Hello World</title>
</head>
<body>
    <h1>Hello World</h1>
</body>
</html>

이제 파일blog/views.py로 이동하고 아래와 같은 새 함수를 생성하여 원하는 이름을 지정할 수 있습니다.

from django.shortcuts import render

# Create your views here.
def index(request):
    return render(request, 'index.html')

여기서는 index라는 함수를 사용하여 인덱스 페이지를 렌더링하고 있습니다. 파일 이름과 동일한 이름을 지정하는 것이 필수는 아니지만 위치를 기억하는 데 도움이 됩니다. 위 함수에서 우리는 매개변수index.html를 제공하고 있습니다. 이는 클라이언트 브라우저에서 데이터를 가져오기 위한 것이고 우리는 서버로서 이 함수에서 로직을 작성합니다.

또한 이 페이지를 보려면 2단계가 더 필요합니다.

먼저 블로그 폴더에 request를 생성하고 아래 코드를 작성합니다.

from django.urls import path
from blog import views

urlpatterns = [
    path('', views.index)
]

여기에서 우리는 urls.py 변수의 모든 URL을 로드하고 있으며 빈 경로는 블로그 앱의 홈페이지에 있음을 의미합니다.

그리고 At Last At the urlpatterns 우리는 약간의 수정이 필요합니다. 둘 다 파일 이름은 같지만 폴더가 다릅니다. 이django_project/urls.py는 전체 사이트의 메인urls.py 라우팅 파일입니다. 아래 주어진 것처럼 변경

from django.contrib import admin
from django.urls import include ,path

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('blog.urls'))
]

여기에서 특수url 기능을 사용하여 사이트의 전역 경로를 추가해야 합니다. 관리자와 유사하게 직접 추가하면 작동하지 않습니다. 이제 아래 제공된 include 스크린샷으로 사이트를 로드합니다.



이것을 분명히 본다면 나는 상대 가져오기를 사용하지 않았습니다. 그것은 미래에 생산 모드에서 약간의 오류를 일으킬 수 있으며 모든 상대 가져오기를 절대 가져오기로 수동으로 업데이트해야 합니다.

하지만 함수 기반 대신 클래스 기반 뷰를 주로 사용하므로 `views.py에서 Mypython ./src/manage.py runserver 함수를 다음과 같이 변경합니다.
index `python
from django.shortcuts import render
from django.views import View

여기에서 보기를 만드세요.

class IndexView(View):

def get(self, request, *args, **kwargs):
    return render(request, 'index.html')

` 뷰 클래스를 변경하고

Here all the logic of the code get into get method 아래의 urlpatterns를 아래와 같이 변경합니다.
blog/urls.py `python
from django.urls import path
from blog import views

urlpatterns = [
path('', views.IndexView.as_view(), name='index_view'),
]
`

It will not change look of the page at all as of now but in future we can use inheritance like features with it.

In Class View 메서드는 GET 요청을 의미하며 분명히 get와 같은 다른 request methods가 있습니다.

['get', 'post', 'put', 'patch', 'delete', 'head', 'options', 'trace'] 메서드는 한 클래스의 요청 메서드에 따라 응답을 반환합니다.

차징 뷰 어게인
as_view() `python
from django.views.generic.base import TemplateView

여기에서 보기를 만드세요.

class IndexView(TemplateView):

template_name: str = 'index.html'

# def get(self, request, *args, **kwargs):
#   return render(request, 'index.html')

`

you can seet the code it reduced if we are returning the render function.

Actually views function have the specific way of returning pages like given below.

python
def my_view_function(request):
context_to_send_html= {"data sent to our template": "some-data" }
return render(request, 'template_file_name.html', context_to_send_html)

좋은 웹페이지 즐겨찾기