django 관계 매핑 2request의 방법

6418 단어 Django
  • CRUD
  • 쿼리
  • 조건부 질의 Entry.objects.조건 1.Author.objects.filter(id=1) 2. 검색어 술어:술어 조회exact : __contains : __startswith : __endswith : … …
     	  :
     		Author.objects.filter(name__startswith=' ')
    
  • Entry.objects.exclude(조건)는 부등치
  • 만 합니다
  • Entry.objects.get(조건)특징: 한 데이터만 반환할 때 사용
  • 수정 사항
  • 단일 데이터 수정 1.조사하다고치다보관
  • 대량 데이터QuerySet의 업데이트()
  • 삭제 delete()
  • F() 및 Q()
  • F()가 실행되는 동안 열의 값 F('열 이름') Author를 가져옵니다.objects.update(age=F(‘age’)+10)
  • Q()Q(조건1)|Q(조건2)
  • 원본 데이터베이스 조작 방법
  • Entry 질의objects.raw(‘sql’)
  • 추가 삭제 withconnection.cursor() as cursor: cursor.execute(‘sql’) return ‘’

  • 백그라운드
  • 백엔드 관리자python3 관리자를 만듭니다.py createsuperuser
  • 기본 관리
  • admin.py에 관리할 실체admin을 등록합니다.site.register(Entry)
  • Models의 표현 형식 정의
  • str()class Author(models.Model):
     def __str__(self):
     	return self.xx
    
  • verbose를 통해name 표시된 필드 이름 수정
  • 	name = models.CharField(
    		max_length=30,
    		verbose_name = "  "
    	)
    
  • 메타 내부 클래스 통과
    	class Meta:
    		1.db_table
    			            
    			(            )
    		2.verbose_name
    			         (  )
    		3.verbose_name_plural
    			    (  )
    

  • 고급 관리 1.고급 관리 클래스 선언 및 등록
    	class EntryAdmin(admin.ModelAdmin):
    		pass
    	admin.site.register(Entry,EntryAdmin)
    
    2.EntryAdmin의 고급 관리 기능 1.list_display 2.list_display_links 3.list_editable 4.list_filter 5.search_field 6.date_hierarchy 7.fields 8.fieldsets ===================================================


  • 관계 매핑
  • 일대일 매핑
  • 문법은 관련된 두 클래스 중 어느 클래스에나 있다. 속성 = 모델스.OneToOneField(Entry)
  •  class Author(models.Model):
     	xxx xxx
     
     class Wife(models.Model):
     	xxx xxx
     	#     
     	author=models.OneToOneField(Author)
    
  • ``
  • 연습:1.다음 속성을 가진 Wife 클래스를 만듭니다.name , 2.age 2.Wife 클래스에 일대일 연관 관계를 추가하려면 Author 3.데이터베이스로 동기화 및 결과 관찰
  • 조회는 와이프에서, author 속성을 통해 대응하는 author 대상을 찾고,wife 속성을 통해 대응하는 와이프 대상을 찾습니다
  • 일대다 매핑
  • 문법은'다'실체에서'1'의 실체를 인용하는 속성 = 모델스.ForeignKey(Entry)
  • 예시 한 출판사에서 여러 권의 도서를 출판할 수 있도록 허용하고 한 권의 도서는 한 출판사 class Publisher(models.Model): xxx xxx class Book(models.Model): xxx xx publisher = 모델스.ForeignKey(Publisher,null=True)
  • 연습:1.Book과 Publisher 사이의 일대다 2를 완성합니다.데이터베이스 효과 보기 3.백그라운드에 로그인하여 Book 엔티티 보기
  • 데이터 조회
  • Book 조회 Publisher를 통해publisher 속성 조회를 통해 연습할 수 있다. 서유기에 대응하는 출판사 정보를 조회하고 단말기에 출력할 수 있다
  • Publisher를 통해 대응하는 모든 Books Django는 Publisher에 대응하는 Book에 대한 조회 인용 속성을 표시합니다: bookset (Entry.objects)


  • 멀티 쌍 멀티 매핑 1.문법은 관련된 두 클래스 중 임의의 클래스에 추가됩니다: 속성 = 모델스.ManyToManyField(Entry) 2.예시 한 작가가 여러 권의 책을 출판할 수 있고 한 권의 책이 여러 작가가 동시에 편찬할 수 있다
     class Author(models.Model):
     	xxxx xxxx
    
     class Book(models.Model):
     	xxxx xxxx
    
     	authors = models.ManyToManyField(Author)
    
  • 데이터 조회 1.Book 쿼리에 대응하는 모든 Authors는 authors를 통해 모든 Author에 대응하는 쿼리 대상을 나타낼 수 있다
     book.authors.all() ->    book       author   
    
     book.authors.filter(age__gt=80) ->   book          80       
    
    .Author를 통해 대응하는 모든 북스 Django를 검색하면 속성 북이 생성됩니다.set은 대응하는 북에 대한 조회 대상
     author.book_set.all()
     author.book_set.filter()
    
  • 을 표시하는 데 사용됩니다.
  • request - 요청 객체
  • Request Http Request가 무엇인지, Django에서 요청 대상입니다. 기본적으로 보기 처리 함수의 매개 변수에 봉인됩니다. - Request
  • Request의 구성원
  • request.scheme: 요청 프로토콜
  • request.body: 요청 바디(POST, PUT)
  • request.path: 요청한 구체적인 자원 경로
  • request.get_full_path: 요청된 전체 경로
  • request.get_host(): 요청된 호스트
  • request.method: 요청 방식
  • request.GET: get 요청 시 캡슐화된 데이터
  • request.POST:post 요청 방식에 포함된 데이터
  • request.COOKIES: 요청된 cookies에 대한 데이터
  • request.META: 요청된 메타데이터(메시지 헤더) request.META['HTTP REFERER']: 소스 주소 요청
  • request.method 사용: Request를 판단합니다.method값, 사용자의 요청 의도 분석
    if request.method == 'GET':
    	           
    else:
    	         
    
    
  • 요청한 데이터 가져오기
  • get 방식 사용
  • 문법request.GET[매개 변수 이름] request.GET.get ('매개 변수 이름', '기본값') request.GET.getlist ('매개 변수 이름')
  • get 요청 방식이 발생할 수 있는 장소
  • 주소 표시줄의 요청
  • location.href='주소?매개변수=값 & 매개변수=값'
  • 표의 method는 get
    :
    ```
  • 참고:
  • 	url(r'^01-xxx/(\d{4})/$',request_views),
    	def request_views(request):
    		request.GET['']
    
    

  • post방식 사용
  • 문법request.POST [매개 변수 이름] request.POST.get ('매개 변수 이름', ') request.POST.getlist ('매개 변수 이름')
  • CSRF 인증 CSRF Cross-Site Request Forgey 사이트 간 위장 솔루션 요청: 1.csrf 검증을 취소하고 settings를 삭제합니다.py의 MIDDLEWARE의 CsrfViews MiddleWare의 중간부품 2.오픈 유효성 검사 보기 처리 함수 증가: @csrfprotect @csrf_protect def post_views(request): pass 3. 인증을 통과하려면 폼에 탭 {% csrf token%}
  • 을 추가해야 합니다
  • 연습: 과수원 프로젝트의 등록 부분 1.데이터베이스 만들기 - FruitDay 2.솔리드 클래스 만들기 - Users 1.uphone - varchar(11) 2.upwd - varchar(50) 3.uemail - varchar(245) 4.uname - varchar(20) 5.isActive - tinyint 기본값은 1(True) 3.완벽한 등록 -/register/1.get 요청이면register로 가세요.html 2.post 요청이라면 요청 데이터를 처리하여 제출한 데이터를 데이터베이스에 저장


  • request의 방법은 다음과 같은 목록이 있습니다
  • [‘COOKIES’, ‘FILES’, ‘GET’, ‘META’, ‘POST’, ‘class’, ‘delattr’, ‘dict’, ‘dir’, ‘doc’, ‘eq’, ‘format’, ‘ge’, ‘getattribute’, ‘gt’, ‘hash’, ‘init’, ‘iter’, ‘le’, ‘lt’, ‘module’, ‘ne’, ‘new’, ‘reduce’, ‘reduce_ex’, ‘repr’, ‘setattr’, ‘sizeof’, ‘str’, ‘subclasshook’, ‘weakref’, ‘_encoding’, ‘_get_post’, ‘_get_raw_host’, ‘_get_scheme’, ‘_initialize_handlers’, ‘_load_post_and_files’, ‘_mark_post_parse_error’, ‘_messages’, ‘_post_parse_error’, ‘_read_started’, ‘_set_post’, ‘_stream’, ‘_upload_handlers’, ‘body’, ‘build_absolute_uri’, ‘close’, ‘content_params’, ‘content_type’, ‘csrf_processing_done’, ‘encoding’, ‘environ’, ‘get_full_path’, ‘get_host’, ‘get_port’, ‘get_raw_uri’, ‘get_signed_cookie’, ‘is_ajax’, ‘is_secure’, ‘method’, ‘parse_file_upload’, ‘path’, ‘path_info’, ‘read’, ‘readline’, ‘readlines’, ‘resolver_match’, ‘scheme’, ‘session’, ‘upload_handlers’, ‘user’, ‘xreadlines’] ···
  • 좋은 웹페이지 즐겨찾기