목록Python_Django (50)
hyeonga_code
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bl3lTF/btssgsPNNYX/g4GmzZOBE3GVonRKksi0W1/img.jpg)
- 필터 유지 1. 검색 후, 다음 페이지도 검색 내용 유지되어 나오는지 확인 > > 'index.html' 'index.html' ===== 1 2 3 4 5 6 7 8 9 Title Writer Content Search Colored by Color Scripter cs >> 실행 시, 다음 페이지 클릭 시, 페이지 정보만 넘기고 있기 때문에 검색과 다른 전체 데이터 페이지로 넘어간다 >> 모든 버튼 수정해야 함 "&cate={{cate}}&kw={{kw}}" 2. 버튼 기능 수정 > > 'index.html' 'index.html' ===== 1 2 3 Home Next Colored by Color Scripter cs - 리셋버튼 Reset - 데이터 없을 경우 보여지는 값 ===== 1 2 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bVkIXG/btskuOGCLTY/Q1ZuR1dbaZ2rDFdgdVDuNK/img.jpg)
- Path 함수 @ path (요청할 url, 함수) @ path (A, B) - rootURL/A/요청 >> B에서 처리 - 'Page not found' 오류 _ 페이지 매칭에 실패한 것
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/D1vQW/btssf0eVIkC/HpHgYaSkUhHUBXMaMSHn7k/img.jpg)
- 필터 설정 1. 함수 설정 > 'views.py' 'views.py' ===== 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 def index(request): cate = request.GET.get('cate','') kw = request.GET.get('kw','') if kw: if cate == 'sub': b = Board.objects.filter(subject=kw) elif cate == 'wri': b = Board.objects.filter(writer=kw) elif cate == 'con': b = Board.objects.filter(content=kw) else: b = Board.objects.all() pg..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/beZ17V/btsslblYiEF/Ltq7BTDURmbQtLtEGoNEQK/img.jpg)
- 검색 옵션 설정 - 페이징까지 된 코드로 작업 1. 검색 카테고리 설정 > > 'index.html' 'index.html' ===== 1 2 3 4 5 6 7 8 9 Title Writer Content Search Colored by Color Scripter cs >> 123 검색 시 > http://127.0.0.1:8000/board/index/?cate=sub&kw=123 2. 함수 설정 > 'views.py' 'views.py' ===== 1 2 3 4 5 6 7 8 9 10 11 12 13 def index(request): cate = request.GET.get('cate','') kw = request.GET.get('kw','') #_ 추가 pg = request.GET.get(..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/JpGz4/btssc76J2qK/PZ18FgDeZr0SEfBvfHSCq1/img.jpg)
- 페이징 기법까지 적용한 전체 코드 1. > 'settings.py' 'settings.py' ===== 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 from pathlib import Path BASE_DIR = Path(__file__).resolve().parent.parent SECRET_KEY = 'django-insecure-a)ms^w63$yve_^r#lob$#)ut6#q#@gqz%-cwljv&c9i_$p$h)o' D..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/ooHNZ/btssfWwOPsh/4rp1UA38KrIRSiWsob1zpK/img.jpg)
- 페이징 - 레코드가 많을 때 사용 - 1 페이지만 고정으로 띄울 것이 아니므로 페이지 번호도 인자로 받아와야 함 - get 전송 방식 사용 - 노출되어도 상관 없음 - 리소스를 적게 사용 1. 함수 설정 > 'views.py' 'views.py' ===== 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 from django.core.paginator import Pageinator def index(request): pg = request.GET.get('page',1) #_ 페이지 인자값이 없을 경우, default값을 1로 지정 b = Board.objects.all() #_ Pagenator(A,B) A레코드를 B단위로 끊어서 페이징 할 것 pag = Paginator(b,10..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/b31K8V/btssc6UhQiH/B0RoOF6sQ8dvahRg1eCsZ1/img.jpg)
- 댓글 선택 삭제 1. 상세페이지에 삭제 기능 작성 'detail.html' ===== 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 {{ b.subject }} written by {{b.writer}} {{ b.content }} 홈 {% csrf_token %} 댓글 등록 {% for i in rset %} {{ i.replyer }} {{ i.comment }} X #_ 인자가 두개 넘어가야 함 {% empty %} 댓글을 달아주세요 {% endfor %} Colored by Color Scripter cs 2. 경로 설정 'urls.py' ===== 1 2 3 4 5 6 7 8 9 10 from django.urls import path ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bkZ0aN/btssgqLeqjK/QWFoWT0lqxT9s7ACLBKwE1/img.jpg)
- 댓글 등록 1. 등록 기능 작성 'detail.html' ===== 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 {{ b.subject }} written by {{b.writer}} {{ b.content }} 홈 #_ redirect를 위해서라도 인자가 필요함 {% csrf_token %} 댓글 등록 {% for i in rset %} {{ i.replyer }} {{ i.comment }} {% empty %} 댓글을 달아주세요 {% endfor %} Colored by Color Scripter cs 2. 경로 설정 'urls.py' ===== 1 2 3 4 5 6 7 8 9 from django.urls import path from . i..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bvXGhS/btssqm1NRTH/RzLApNKCP4gIS30bhCTUNk/img.jpg)
- 상속 테이블 1. 장고 실행 2.앱 생성 3. 상속 클래스 테이블 생성 > 'models.py' 'models.py' ===== 1 2 3 4 5 6 7 8 9 10 from django.db import models # Create your models here. class Board(models.Model): subject = models.CharField(max_length=100) writer = models.CharField(max_length=100) content = models.TextField() def __str__(self): return f"{self.writer} 가 작성한 {self.subject}" cs 갑자기 보드를 참조하게 됨 보드는 리플라이에게 역참조지시자를 사용하여 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cEkx2G/btssbBG1I0V/8xNctflsUfqXqwQsdKjzq0/img.jpg)
- 계정 비밀번호 변경 1. 업데이트 페이지에 버튼 생성 > > 'update.html' 'update.html' ===== 1 2 3 4 5 6 UPDATE PAGE Change Password Colored by Color Scripter cs 2. 경로 설정 > 'urls.py' 'urls.py' ===== 1 2 3 4 5 6 from django.urls import path, include from . import views urlpatterns = [ path('chpass/', views.chpass, name="chpass") ] Colored by Color Scripter cs 3. 함수 설정 > 'views.py' 'views.py' ===== 1 2 3 4 5 6 7 8 9 10 ..