Django 보기,전 참,forms 검증 작업
주요 내용:URLconf,HttpRequest 대상,HttpResponse
1)보 기 는 웹 요청 을 받 아들 이 고 웹 응답 을 되 돌려 줍 니 다.
2)보 기 는 python 함수 로 views.py 에 정의 되 어 있 습 니 다.
3)응답 은 웹 페이지 의 HTML 내용,방향 변경,404 오류 등 일 수 있 습 니 다.
4)http 요청 에서 두 개의 핵심 대상 을 만 듭 니 다.위 치 는 django.http 입 니 다.
http 요청:HttpRequest 대상
http 응답:HttpResponse 대상
이 두 상 대 는 django 가 만들어 준 거 예요.
URLconf 관련 개요
•settings.py 파일 에서 ROOTURLCONF 루트 url 설정 지정
•urlpatterns 는 url()인 스 턴 스 의 목록 입 니 다.우 리 는 그것 을 경로 라 고 부 릅 니 다.그 안의 모든 url()을 경로 설정 이 라 고 부 릅 니 다.
•url()대상 은 정규 표현 식,보기 함수,선택 가능 한 매개 변수,이름 name 을 포함 합 니 다.
•요청 한 url 은 일반적인 python 문자열 로 간주 되 며,일치 할 때 get 이나 post 가 요청 한 인자 와 도 메 인 이름 을 포함 하지 않 습 니 다.
사전 Context={}컨 텍스트,html 페이지 에 인자 가 있 을 때 사전 에 봉 인 된 render 의 세 번 째 매개 변수 로 되 돌아 가도 사전 저장 변수 context={'name':'lm'}을 직접 쓸 수 있 습 니 다.
html 템 플 릿 언어 에서:템 플 릿 언어 주석{\#표시...\#}템 플 릿 에 변 수 를 표시 할 때{{'name'}을 사용 하여 변 수 를 표시 합 니 다.(사전 context 의{}을 취소 합 니 다.
for 순환:
{%for num in b%}b 를 목록 으로 합 니 다.
{{num}}
{%endfor%}
{%for key,value in c.items%}\#c 사전
{{key}}---->{{value}}
{% endfor %}
{%if 조건%}조건 실행 문{%else%}조건 에 만족 하지 않 는 문{%endif%}
URL 의 역방향 해석(소프트 연결)
보기,템 플 릿 에 하 드 인 코딩 링크 를 사용 하면 urlconf 가 바 뀌 었 을 때 유지 하 는 것 은 매우 번 거 로 운 일이 다.
해결:링크 를 만 들 때 url conf 의 이름,즉 우리 가 설정 한 namespace 와 name 을 가리 키 며 링크 주 소 를 동적 으로 생 성 합 니 다.
웹 템 플 릿 언어의 경 로 는"{%url'namesapce(배포 경로 의 이름):name(url 의 별명)'%}"을 표시 합 니 다.
보기:django.core.url resolvers.reverse()함수 사용
템 플 릿 언어 에서()[]불법 이면 잘못 보고 합 니 다.
경로 설정
include 이 방법 은 메 인 경로 가 일치 한 후에 남 은 경 로 를 app 안의 하위 경로 에 나 누 어 처리 합 니 다.이것 은 엄격 한 일치 가 아 닙 니 다.바로 끝 문자$가 없 는 것 입 니 다.첫 번 째 매개 변 수 는 설정 파일 에 나 누 어 처리 하 는 것 을 대표 합 니 다.두 번 째 매개 변수 namespace 는 역방향 분석 을 대표 합 니 다.url()에서 name 매개 변수 역할 과 유사 합 니 다.
주 경로 설정:주 경 로 는 우리 프로젝트 설정 폴 더 에서 settings.py 파일 과 같은 등급 의 urls.py 파일 에 있 는 urlpatterns 입 니 다.주 루트 를 스케줄 링 분배 루트 의 도구 로 삼다.홈 페이지 는 메 인 경로 에 놓 여 있 습 니 다.
하위 경로:서로 다른 app 모듈(app 에서 urls.py 파일 설정)로 나 뉘 어 주 경로 판단 분자 경로 작업
urlpatterns 의 include 는 하위 경로 로 나 누 어 줍 니 다.주 경로 의 urlpatterns 의 url(r'^news/',include('news.urls',namespace='news')뉴스 를 응용 모듈 로 합 니 다.
경로 참조(위치 와 키워드)템 플 릿 언어 는 괄호 안에{%url'news:newsdate'2018 4 20 %}
정규 표현 식 그룹 전 참(위치 전 참)이름 이 없 음:url(r'/(\d+)/(\d+)/(\d+)/$)
보기 함 수 는 다음 과 같다.
정규 표현 식 그룹 전 삼(키워드 전 삼)이름:보기 함수 의 매개 변 수 는 난서 일 수 있 습 니 다.
url(r'/(?P
요청 방식 전송:모드 언어 전송:{%url'news:newsdate'%}?name=lm&a=5 는 url 경로 와 무관 합 니 다.
모든 form 폼 제출 은 forms 검증 이 필요 하고 전단 form 폼 은 제출 경로 action="{%url'users:userregister' %}"
방식 method="post"
user 의 app 에서 forms.py 파일 을 만 들 고 인증 조건 을 작성 합 니 다.
from django import forms
from captcha.fields import CaptchaField
from .models import UserProfile,EmailVerify
class UserRegisterForm(forms.Form):
email = forms.EmailField(required=True,error_messages={
'required':' '
})
password = forms.CharField(min_length=3,max_length=20,required=True,error_messages={
'required': ' ',
'min_length':' 3 ',
'max_length': ' 20 ',
})
captcha = CaptchaField(error_messages={
'invalid':' '
})
views.py 파일 에서
from .forms import UserRegisterForm
def user_register(request):
if request.method == 'GET':
user_register_form = UserRegisterForm()
return render(request,'users/register.html',{
'user_register_form':user_register_form
})
else:
user_register_form = UserRegisterForm(request.POST)#
if user_register_form.is_valid():#
email = user_register_form.cleaned_data['email']# request
password = user_register_form.cleaned_data['password']
user = UserProfile.objects.filter(Q(email=email)|Q(username=email))
if user:
return render(request,'users/register.html',{
'msg':' '
})
else:
a = UserProfile()
a.username = email
a.email = email
a.set_password(password)#
a.si_active=False# ,
a.save()
else:
return render(request,'users/register.html',{
'user_register_form':user_register_form
})
인자 획득 용:zhaoliying=request.GET.get('name',None)GET 류 사전(한 번 에 여러 값 을 getlist 로 가 져 올 수 있 음)None 는 기본 값 없 이 None 로 돌아 갑 니 다.전단 에서 백 엔 드 로 전 달 된 데 이 터 는 모두 문자열 입 니 다.CSRF 크로스 오 버 위조 공격 오류.POST 방식 으로 전 달 된 인 자 를 가 져 올 때 form 폼 에{%csrf 를 추가 하 는 오 류 를 취소 해 야 합 니 다.token %}
HttpReqeust 대상
다음은 특별히 설명 하지 않 으 면 속성 은 모두 읽 기 전용 이 고 모두 문자열 입 니 다.
1)path:요청 한 페이지 의 전체 경 로 를 표시 하 는 문자열 입 니 다.도 메 인 이름과 요청 인 자 는 포함 되 지 않 습 니 다.
2)method:요청 한 HTTP 방법 을 나타 내 는 문자열 입 니 다.일반적인 값 은'GET','POST'를 포함 합 니 다.
3)encoding:제출 한 데 이 터 를 표시 하 는 문자열 의 인 코딩 방식
A)None 이면 브 라 우 저의 기본 설정 을 사용 합 니 다.보통 utf-8 입 니 다.
B)이 속성 은 쓸 수 있 습 니 다.폼 데이터 에 접근 하 는 인 코딩 을 수정 할 수 있 습 니 다.다음 속성 에 대한 모든 접근 은 새로운 encoding 값 을 사용 합 니 다.
4)GET:사전 QueryDict 와 유사 한 대상 으로 get 요청 방식 의 모든 인 자 를 포함 하고 url 요청 주소 의 인자 와 대응 합 니 다.위 치 는?다음 매개 변수의 형식 은 키 값 쌍 입 니 다.예 를 들 어 키 1=value 1 입 니 다.여러 매개 변수 사이,사용&연결.인자 획득 용:data=request.GET.get('키',기본 값)가 져 오기
5)POST:사전 QueryDict 와 유사 한 대상 으로 post 요청 방식 의 모든 인 자 를 포함 합 니 다.컨트롤 에 name 속성 이 있 으 면 name 속성의 값 은 키 이 고 value 속성의 값 은 키 이 며 키 값 대 제출 을 구성 합 니 다.인자 획득 용:data=request.POST.get('키',기본 값)가 져 오기
6)FILES:모든 업로드 파일 을 포함 하 는 사전 과 유사 한 대상
7)쿠키:모든 쿠키,키,값 을 문자열 로 포함 하 는 표준 Python 사전
8)session:읽 을 수 있 고 쓸 수 있 는 사전 과 유사 한 대상 으로 현재 세 션 을 표시 합 니 다.Django 가 세 션 지원 을 사용 할 때 만 사용 할 수 있 습 니 다.자세 한 내용 은'상태 유지'가 python 사전 과 달리 QueryDict 형식의 대상 은 같은 키 에 여러 개의 값 이 있 는 상황 을 처리 하 는 데 사 용 됩 니 다.
쿠키 조작
1)Cookie 는 때때로 복수 형식 Cookies 로 일부 사이트 가 사용자 의 신분 을 판별 하고 session 추적 을 하기 위해 사용자 로 컬 단말기 에 저 장 된 데 이 터 를 말한다.RFC 2109 와 2965 에 정 의 된 것 은 모두 폐기 되 었 고 최근 에 대 체 된 규범 은 RFC 6265[1]이다.(브 라 우 저 캐 시 라 고 할 수 있 음)
2)쿠키 는 서버 설정 이 브 라 우 저 에 저 장 된 텍스트 정보 입 니 다.예 를 들 어 사용자 가 로그 인 할 때 비밀 번 호 를 입력 하지 않 아 도 됩 니 다.
이상 의 Django 보기,전 참 과 forms 검증 작업 은 바로 편집장 이 여러분 에 게 공유 한 모든 내용 입 니 다.참고 하 실 수 있 고 많은 응원 부 탁 드 리 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 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에 따라 라이센스가 부여됩니다.