Django 그래 픽(view)사용
보기 함수,보기 라 고 약칭 합 니 다.본질 적 으로 간단 한 Python 함수 입 니 다.웹 요청 을 받 아들 이 고 웹 응답 을 되 돌려 줍 니 다.응답 하 는 내용 은 HTML 페이지,리 셋,404 오류,그림 등 모든 것 일 수 있 지만 본질은 응답 대상 HttpResponse 를 되 돌려 주 는 것 입 니 다.
보기 함수 의 코드 는 어디 에 써 도 되 지만 프로젝트 나 응용 프로그램 디 렉 터 리 에 설 치 된 views.py 파일 로 약 속 됩 니 다.
보기 사례:
from django.shortcuts import render, HttpResponse, HttpResponseRedirect, redirect
import datetime
def current_datetime(request):
now = datetime.datetime.now()
html = "<html><body>It is now %s.</body></html>" % now
return HttpResponse(html)
해석:요청 대상(request)의 속성:
django 는 요청 메시지 의 요청 줄,첫 번 째 정보,내용 테 마 를 HttpRequest 클래스 의 속성 으로 패키지 합 니 다.특수 설명 을 제외 하고 나머지 는 모두 읽 기만 한다.
1. request.POST # 프론트 포스트 에서 보 내 온 데 이 터 를 POST 사전 에 포장 합 니 다.
2. request.GET # 프론트 브 라 우 저 창 에 있 는 데 이 터 를 GET 사전 에 포장 합 니 다.
3. request.method # 프론트 요청 방식
4. request.body # post 제출 한 데이터,body 의 내용,프론트 데스크 는 name=lqz&age=18&sex=1 로 봉 인 됩 니 다.
5. request.path # 요청 한 경 로 를 꺼 내 데이터 부분 을 찾 을 수 없습니다.
6. request.encoding #제출 한 데 이 터 를 표시 하 는 인 코딩 방식 의 문자열 입 니 다.기본'utf-8'
7. request.META #모든 HTTP 첫 번 째 를 포함 하 는 표준 Python 사전
CONTENT_LENGTH―요청 한 본문 길이(문자열).
CONTENT_TYPE―요청 한 본문의 MIME 유형.
HTTP_ACCEPT―받 아들 일 수 있 는 Content-Type 에 응답 합 니 다.
HTTP_ACCEPT_ENCODING-받 을 수 있 는 인 코딩 에 응답 합 니 다.
HTTP_ACCEPT_LANGUAGE―받 아들 일 수 있 는 언어 에 응답 합 니 다.
HTTP_HOST―고객 센터 에서 보 낸 HTTP Host 머리.
HTTP_REFERER―Referring 페이지.
HTTP_USER_AGENT―클 라 이언 트 의 user-agent 문자열.
QUERY_STRING―단일 문자열 형식의 조회 문자열(해석 되 지 않 은 형식).
REMOTE_ADDR―클 라 이언 트 의 IP 주소.
REMOTE_HOST―클 라 이언 트 의 호스트 이름.
REMOTE_USER―서버 인증 후의 사용자.
REQUEST_METHOD―"GET"나"POST"와 같은 문자열
SERVER_NAME―서버 의 호스트 이름.
SERVER_PORT―서버 의 포트(문자열).
--------------------------------
CONTENT 제외LENGTH 와 CONTENTTYPE 외 에 요청 한 모든 HTTP 첫 번 째 부분 이 META 키 로 바 뀌 었 을 때,
모든 알파벳 을 대문자 로 바 꾸 고 연결 부 호 를 밑줄 로 바 꾸 고 마지막 에 HTTP 접두사.
---------------------------------
8.request.FILES\#모든 업로드 파일 정 보 를 포함 합 니 다.
9. request.COOKIES #사전 형식,키,문자열 만 있 고 모든 쿠키 를 포함 합 니 다.
10. request.session #현재 세 션 은 django 에서 세 션 을 사용 할 때 만 사용 할 수 있 습 니 다.
11.request.user(사용자 인증 구성 요소)
하나의 AUTHUSER_MODEL 형식의 대상 은 현재 로그 인 한 사용 자 를 표시 합 니 다.
사용자 가 현재 로그 인 하지 않 으 면 user 는 django.contrib.auth.models.AnonymousUser 의 인 스 턴 스 로 설정 합 니 다. 당신 은 is 를 통 해authenticated()구분 합 니 다.
예 를 들 면:
if request.user.is_authenticated():
# Do something for logged-in users.
else:
# Do something for anonymous users.
user 는 Django 가 Authentication Middleware 미들웨어 미들웨어 를 사용 할 때 만 사용 할 수 있 습 니 다.익명 사용자
class models.AnonymousUser
django.contrib.auth.models.AnonymousUser django.contrib.auth.models.User , :
id 는 영원히 None 입 니 다.username 은 영원히 빈 문자열 입 니 다.
get_username()은 빈 문자열 을 영원히 되 돌려 줍 니 다.
is_staff 와 is슈퍼 유 저 는 영원히 false 입 니 다.
is_active 는 영원히 False 입 니 다.
groups 와 userpermissions 는 영원히 비어 있 습 니 다.
is_anonymous()는 false 가 아 닌 True 로 돌아 갑 니 다.
is_authenticated()는 True 가 아 닌 false 로 돌아 갑 니 다.
set_password()、check_password(),save(),delete()는 NotImplemented Error 를 일 으 킵 니 다.
New in Django 1.8: AnonymousUser.get 추가username()은 django.contrib.auth.models.User 를 더욱 잘 모 의 합 니 다.
주:FILES 는 POST 를 요청 하고 제출 하 는 방법 만 있 습 니 다.
enctype="multipart/form-data"가 있 는 경우 에 만
데이터 포함.그렇지 않 으 면 FILES 는 사전 과 유사 한 빈 대상 이 될 것 이다.
request 의 일반적인 방법:
1. request.get_full_path()
요청 한 경 로 를 꺼 내 면 데이터 부분 을 찾 을 수 있 습 니 다.request.path 에서 데 이 터 를 찾 을 수 없습니다.
2. request.is_ajax()
요청 이 XML HttpRequest 를 통 해 생 성 되 었 다 면 True 로 돌아 갑 니 다.이 방법의 역할 은 현재 요청 이 aax 메커니즘 을 통 해 보 내 졌 는 지 판단 하 는 것 이다.
3. request.is_secure()
Https 를 사용 하면 트 루 로 돌아 가 연결 이 안전 하 다 는 뜻 입 니 다.
2.HttpResponse 대상
응답 대상 은 주로 세 가지 형식 이 있 습 니 다.
HttpResponse()괄호 안에 구체 적 인 문자열 을 직접 응답 체 로 합 니 다.
2.render
render(request,template_name,[,context])
결합
인자:
다시 지정 할 하 드 인 코딩 URL 전달
def my_view(request):
...
return redirect('some/url')
완전한 URL 일 수도 있 습 니 다:
def my_view(request):
...
return redirect('http://www.baidu.com')
301 과 302 의 차 이 를 재 정립 하 다.1)301 과 302 의 차이.
301 과 302 상태 코드 는 모두 재 설정 을 표시 합 니 다.즉,브 라 우 저 는 서버 가 되 돌아 온 이 상태 코드 를 받 은 후에 자동 으로 새로운 URL 주소 로 이동 합 니 다.이 주 소 는 응답 하 는 Location 첫 번 째 부분 에서 얻 을 수 있 습 니 다.(사용자 가 본 효 과 는 바로 그 가 입력 한 주소 A 가 순식간에 다른 주소 B 로 변 하 는 것 입 니 다)-이것 은 그들의 공통점 입 니 다.
그들의 차 이 는.301 은 오래된 주소 A 의 자원 이 영구적 으로 제거 되 었 음 을 나타 낸다.(이 자원 은 접근 할 수 없다)검색엔진 은 새로운 내용 을 캡 처 하 는 동시에 오래된 주 소 를 재 설정 한 사이트 로 교환 하기 도 한다.
302 는 기 존 주소 A 의 자원 이 아직(여전히 접근 할 수 있 음)있 음 을 나타 낸다.이 재 설정 은 기 존 주소 A 에서 주소 B 로 임시 적 으로 이동 할 뿐 검색엔진 은 새로운 내용 을 캡 처 하여 오래된 주 소 를 저장 할 것 이다.SEO 302 가 301 보다 낫다.
2)방향 을 바 꾸 는 이유:
(1)사이트 조정(예 를 들 어 웹 디 렉 터 리 구 조 를 바 꾸 는 것);
(2)웹 페이지 가 새 주소 로 옮 겨 집 니 다.
(3)웹 페이지 확장자 변경(예 를 들 어.php 를.Html 또는.shtml 로 변경 해 야 함).
이러한 상황 에서 방향 을 바 꾸 지 않 으 면 사용자 즐겨 찾기 폴 더 나 검색엔진 데이터 베이스 에 있 는 오래된 주 소 는 방문 자 에 게 404 페이지 의 오류 정 보 를 얻 게 하고 방문 데 이 터 를 헛되이 잃 게 할 수 밖 에 없다.또한 여러 도 메 인 이름 을 등록 한
사이트 도 도 도 메 인 이름 을 방문 하 는 사용자 가 홈 페이지 로 자동 으로 이동 하도록 방향 을 바 꿔 야 한다.
3.JSON Response 대상
제 이 슨 형식 문자열 의 두 가지 방식 을 전단 으로 되 돌려 줍 니 다.
#
# import json
# data={'name':'lqz','age':18}
# data1=['lqz','egon']
# return HttpResponse(json.dumps(data1))
#
from django.http import JsonResponse
# data = {'name': 'lqz', 'age': 18}
data1 = ['lqz', 'egon']
# return JsonResponse(data)
return JsonResponse(data1,safe=False)
넷 째,CBV 와 FBVCBV 는 클래스 기반 보기(Class base view)와 FBV 함수 기반 보기(Function base view)
from django.views import View
class AddPublish(View):
def dispatch(self, request, *args, **kwargs):
print(request)
print(args)
print(kwargs)
# ,
obj=super().dispatch(request, *args, **kwargs)
return obj
def get(self,request):
return render(request,'index.html')
def post(self,request):
request
return HttpResponse('post')
5.간단 한 파일 업로드
def fileupload(request):
if request.method=='GET':
return render(request,'fileupload.html')
if request.method=='POST':
# FILES
print(request.FILES)
print(type(request.FILES.get('myfile')))
# ,
myfile=request.FILES.get('myfile')
from django.core.files.uploadedfile import InMemoryUploadedFile
#
name=myfile.name
# ,
with open(name,'wb') as f:
# for line in myfile.chunks():
for line in myfile:
f.write(line)
return HttpResponse('ok')
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 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에 따라 라이센스가 부여됩니다.