Django - 뷰 레이어 - 뷰 함수 및 바로 가기
현재 날짜와 시간을 HTML 문서로 되돌려줍니다.
from django.http import HttpResponse
import datetime
def current_time(request):
now = datetime.datetime.now()
html = 'It is now %s.
' % now
return HttpResponse(html)
django.http
모듈에서 HttpResponse
클래스와 파이톤datetime
라이브러리current_time
보기 함수 정의HttpRequest
대상을 첫 번째 위치 매개 변수로 받아들여 일반적으로 request
라고 부른다.HttpResponse
대상을 되돌려줍니다.다양한 오류 페이지 사용자 정의
먼저 루트 URLconf에 오류 페이지의 항목을 추가합니다.
from django.contrib import admin
from django.urls import path
from app import views
...
#
handler400 = views.bad_request
handler403 = views.permission_denied
handler404 = views.page_not_found
handler500 = views.error
app/views.py
from django.shortcuts import render
from django.views.decorators.csrf import requires_csrf_token
@requires_csrf_token
def bad_request(request, exception):
return render(request, '400.html')
@requires_csrf_token
def permission_denied(request, exception):
return render(request, '403.html')
@requires_csrf_token
def page_not_found(request, exception):
return render(request, '404.html')
@requires_csrf_token
def error(request, exception):
return render(request, '500.html')
그리고 자신의 요구에 따라 대응하는 400403404500 네 페이지를 만듭니다.
잘못된 뷰는 DEBUG가 False로 설정된 경우에만 자동으로 실행됩니다.
비동기 뷰
Django3.1 비동기 보기 함수를 지원하기 시작합니다. 비동기 보기 함수를 작성하려면 Python의
async def
키워드 문법만 사용하십시오.from django.http import HttpResponse
import datetime
async def current_time(request):
now = datetime.datetime.now()
html = 'It is now %s.
' % now
return HttpResponse(html)
기본 제공 바로 가기
render()
render(request, template_name, context=None, content_type=None, status=None, using=None)
주어진 템플릿과 주어진 컨텍스트 사전을 결합하여 렌더링된 HtppResponse 객체에 필요한 매개 변수를 반환합니다.
redirect(to, args, permanent=False, *kwargs)
전달된 URL 매개 변수에 따라 Http ResponseRedirect를 되돌려줍니다
매개변수 to는 다음과 같습니다.
예:
from django.shortcuts import redirect
def my_view(request):
obj = MyModel.objects.get(...)
return redirect(obj)
def my_view(request):
return redirect('index_name', foo='bar')
get_object_or_404()
get_objects_or_404(klass, args, **kwargs)
예:
from django.shortcuts import get_object_or_404
def my_view(request):
return get_object_or_404(MyModel, pk=1)
get_object_or_404(Book, title__startswith='M', pk=1)
get_list_or_404()
주어진 모델 관리자의 Filter () 결과를 되돌려주고 결과를 목록으로 비추며, 결과가 비어 있으면 Http404 이상이 팝업됩니다
예: MyModel에서 게시된 모든 객체 가져오기
from djang.shortcuts import get_list_or_404
def my_view(request):
my_objects = get_list_or_404(MyModel, published=True)
뷰 장식기
require_http_methods()
이 뷰에 대한 액세스를 제한하는 HTTP 방법
from django.viewsdecorators.http import require_http_methods
@require_http_methods(["GET", "POST"])
def my_view(request):
....
서버 () 보기
사용자가 올린 사진, 파일 등을 통칭하여 MEDIA라고 한다.
개발 과정에서 MEDIA 자원의 사용과 테스트를 편리하게 하기 위해 Django는 서버 () 보기를 내장하여 유니버설 기능을 실현했습니다.
serve () 보기는 개발 환경에만 사용할 수 있습니다
다음 절차를 따르십시오.
루트urls
from django.conf import settings
from django.urls import re_path
from djang.views.static import serve
if setting.DEBUG:
urlpatterns += [
re_path(r'^media/(?P.*)$' , serve, {
'document_root': settings.MEDIA_ROOT,
}),
]
settings에 다음 설정을 추가합니다
MEDIA_URL = '/media/'
MEDIA_ROOT = '/media/'
Django 프로젝트의 루트 디렉터리에 미디어 폴더를 새로 만들고 MEDIA 자원을 넣습니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
파이썬을 사용하여 10진수를 bin, 8진수 및 16진수 형식으로 변환하는 방법은 무엇입니까?텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.