반응형
[ Regex ]
<re_path> : 정규표현식을 직접 사용하기 위해 사용함
사용법1
: re_path('url주소/<타입:필드>/', views.메서드이름)
예)
: path('<int:pk>/', views.post_detail)
사용법2
: re_path(r'url주소/(?P<매개변수>정규표현식)', views.메서드이름)
예)
: re_path(r'archives/(?P<year>20\d{2})/', views.archives_year)
<Path Converter> : 커스텀 정규표현식 생성/사용
사용법1:
class 클래스이름:
regex : r'정규표현식'
# url로부터 추출한 문자열을 뷰에 넘겨주기 전에 반환
def to_python(self, value):
return int(value)
# url reverse 시에 호출
def to_url(self, value):
return str(value)
register_converter(YearConverter, 'year') : YearConverter 클래스를 year란 이름으로 사용하겠다
[ Root Template ]
<프로젝트명 urls.py>
# DIRS에 설정된 경로에서 root.html를 불러오겠다.
path('', TemplateView.as_view(template_name='root.html'), name='root'),
<settings -> TEMPLATES -> DIRS>
'DIRS': [
# File System Template Loader
# 디렉토리 경로를 지정한뒤 그곳에 html 파일을 만들어야 인식함.
os.path.join(BASE_DIR, 'askcompany', 'templates'),
],
---------------------------------------------
[ RedirectView ]
permanent (defalut : False)
# True : 301 응답 (영구적인 이동) - 검색엔진에 영향
# False : 302 응답 (임시 이동)
----------------
[ Attribute ]
url = None
# URL 문자열
pattern_name = None
# URL Reverse를 수행할 문자열
query_string = False
# QueryString을 그대로 넘길 것인지 여부
----------------
사용법 : path('url주소', RedirectView.as_view(속성,), name='이름'),
예1) : path('', RedirectView.as_view(url='/instagram/',), name='post_list'),
예2) : path('', RedirectView.as_view(pattern_name='instagram:post_list',), name='post_list'),
[ DetailView ]
queryset : 쿼리의 내용을 설정한다.
self.request.user.is_authenticated : 로그인 여부 체크
# 함수를 정의해서 사용한다.
class PostDetailView(DetailView):
model = Post
# queryset을 이용한 방법
# queryset = Post.objects.filter(is_public=True)
# get_queryset 메서드를 재정의해서 사용하는 방법
def get_queryset(self):
qs = super().get_queryset() # 오버로딩
if not self.request.user.is_authenticated: # 로그인 여부
qs = qs.filter(is_public=True)
return qs
# 클래스기반 View를 사용하기위해 클래스의 as_view를 호출
post_detail = PostDetailView.as_view()
[ ListView ]
[ html & bootstrap]
page
# 표시할 결과 페이지.
pages_to_show
# 총 페이지 수
:default: ``11``
url
# 앞으로 페이지 매김 및 뒤로 페이지 매김을 위해 탐색할 URL.
:default: ``None``
size
# CSS를 통해 페이지 매김의 크기를 제어. 기본 크기는 보통.
다음 중 하나:
* ``'small'``
* ``'large'``
:default: ``None``
extra
# 추가 페이지 매개변수.
:default: ``None``
parameter_name
# 페이징 URL 매개변수의 이름.
:default: ``'page'``
예) : {% bootstrap_pagination page_obj size="large" %}
---------------------------------------------
[ View.py ]
paginate_by
# 보여줄 목록의 개수
예) : post_list = ListView.as_view(model=Post, paginate_by=10)
'기술정리 > Django' 카테고리의 다른 글
Django 안정적인 마이그레이션 방법 (0) | 2024.04.06 |
---|---|
Django 효율적인 대량 데이터 마이그레이션 방법 (0) | 2024.04.05 |
Django Instagram Project 2 (0) | 2022.11.20 |
Django Instagram Project 1 (0) | 2022.11.14 |
Django 장식자 (0) | 2022.10.10 |