[Django] Django(4)View 베이스 함수 뷰
Django의 뷰 레이어는 사용자의 요청을 처리하고 응답을 반환합니다.
Django의 보기는 호출 가능한 대상이기 때문에 두 가지 방식이 있습니다. Python 함수를 통해 이루어진 함수 보기와 Python 클래스를 통해 이루어진 클래스 보기입니다.보기를 통해 사용자는 웹 요청을 받아들이고 웹 응답을 되돌려줍니다.응답은 텍스트, HTML 페이지, 이미지...
보기의 정의는 프로젝트의 임의의 모듈에 있을 수 있지만, Django는 모든 응용 프로그램의views에 적용됩니다.py는 보기를 정의하는 데 전문적으로 쓰인다.
이후 개발에서 가장 많이 사용된 것은 사실상 DjangoREST에서 제공한 보기이기 때문에 초보자에게는 이곳을 알아보기만 하면 된다.
1. 함수 보기
함수 뷰는 HttpRequest 유형의 객체를 매개 변수로 받아들이고 다음 형식으로 생성된 응답을 포함하는 HttpResponse 객체를 반환하는 Python 함수입니다.
from django.http import HttpRequest,HttpResponse
def func(request):
......
return HttpResponse()
어떻게 함수를 통해 보기를 만들고 사용자가 URL을 입력할 때 페이지에 보여 줍니까?다음 두 걸음으로 끝낼 수 있다
Step1.뷰 생성하기
임의로 적용되는views.py:
from django.http import HttpRequest,HttpResponse
def helloword(request):
return HttpResponse("Hello,Django!")
HttpRequest 객체는 요청할 때 자동으로 만들어지고 HttpResponse는 우리가 만들어야 합니다.
Step2.URL 구성
프로젝트의 프로필 (settings.py) 에서
ROOT_URLCONF
문자열은 전체 프로젝트의 루트 URL 프로필을 지정합니다. 예를 들어:ROOT_URLCONF = 'mysite.urls'
그래서 우리도 mysite의urls에 있다.py에서 URL을 설정합니다. 이 파일에서:
"""mysite URL Configuration
The `urlpatterns` list routes URLs to views. For more information please see:
https://docs.djangoproject.com/en/2.0/topics/http/urls/
Examples:
Function views
1. Add an import: from my_app import views
2. Add a URL to urlpatterns: path('', views.home, name='home')
Class-based views
1. Add an import: from other_app.views import Home
2. Add a URL to urlpatterns: path('', Home.as_view(), name='home')
Including another URLconf
1. Import the include() function: from django.urls import include, path
2. Add a URL to urlpatterns: path('blog/', include('blog.urls'))
"""
from django.contrib import admin
from django.urls import path,include
from polls import views
urlpatterns = [
path('admin/', admin.site.urls),
]
이 파일 주석에서 세 가지 방식으로 URL을 만드는 것에 대해 설명했습니다.우선views 모듈을 가져오고
urlpatterns
목록에서 path () 를 통해 URL을 지정합니다. 예를 들어:from polls import views
urlpatterns = [
path('admin/', admin.site.urls),
path('hello/', views.helloword, name='helloword'),
]
이제 브라우저에 입력 가능http://127.0.0.1:8000/hello, 이 보기에 접근할 수 있습니다.
이것은 첫 번째 방식으로 URL 설정을 하는 것이지만, 이러한 방식을 추천하지 않습니다. 모든 응용 프로그램의 URL을 루트UrlConf에 모두 설정하면 프로젝트가 점점 거대해지면서 URL이 매우 혼란스러워지기 때문입니다.루트 UrlConf에서
include()
함수를 통해 모든 응용 프로그램의 UrlConf를 도입해야 합니다. 루트 UrlConf가 일치하면 include () 를 통해 대응하는 응용 프로그램에서 일치합니다.다음과 같은 방법으로 URL을 만듭니다.path('hello/', include('polls.urls')),
폴스를 도입했습니다.urls.py,polls.urls.py:
from . import views
path('', views.helloword),
이 두 가지 방식의 설정은 모두 원시 설정에 속하고 이후 학습에서 로터로 URL 설정을 하는데 이것도 프로젝트 개발에서 자주 사용하는 방식이다.
처리 요청 오류
Django의 경우 200을 제외한 각 응답 코드에는 다음과 같은 HttpResponse의 하위 클래스가 있습니다.
def get_student(requset):
try:
stu1 = Student.objects.get(name='Little.Hong')
except Student.DoesNotExist:
return HttpResponseNotFound('Page not found'
)
else:
return HttpResponse("name:{0},age:{1}".format(stu1.name, stu1.age))
또한 일반적인 404 오류의 경우 HttpResponseNotFound 이외에도 Http404 예외를 제거하여 처리할 수 있습니다.
from .models import Student, classRoom
from django.http import Http404
def get_student(requset):
try:
stu1 = Student.objects.get(name='Little')
except Student.DoesNotExist:
raise Http404("page not found")
else:
return HttpResponse("name:{0},age:{1}".format(stu1.name, stu1.age))
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Django 라우팅 계층 URLconf 작용 및 원리 해석URL 구성(URLconf)은 Django가 지원하는 웹 사이트의 디렉토리와 같습니다.그것의 본질은 URL과 이 URL을 호출할 보기 함수 사이의 맵표입니다. 위의 예제에서는 URL의 값을 캡처하고 위치 매개 변수로...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.