URL 정규표현식 활용 및 유저 페이지 구현

guava·2022년 1월 4일
0
post-custom-banner

파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트 강의를 듣고 정리한 글입니다.

정규표현식을 이용해서 url 매칭을 수행해본다.

views

username에 대한 유저 및 유저에 대한 포스팅을 찾아서 반환한다.

# instagram/views.py
def user_page(request, username):
    page_user = get_object_or_404(get_user_model(), username=username, is_active=True)
    post_list = Post.objects.filter(author=page_user)
    return render(request, 'instagram/user_page.html', {
        'page_user': page_user,
        'post_list': post_list
    })

django.contrib.auth.validators.UnicodeUsernameValidator를 참고해서 username에 대한 정규표현식을 구성하였다.

이는 유저폼에서 위의 벨리데이터가 username필드에 대한 벨리데이터로 활용되고 있었기 때문이다. (r'^(?P<username>[\w.@+-]+)/$')

URL 정규표현식 사용 시 주의사항

  • re_path 함수를 사용해야 한다.
  • 정규표현식 시작은 ^ 끝은 $로 작성해야 해당 정규표현식과 일치 했을 때 뷰를 호출한다.
  • r로 시작해야 이스케이프 문자를 쓰지 않을 수 있다.
# instagram/urls.py
from django.urls import path, re_path
from . import views

app_name = 'instagram'
urlpatterns = [
    path('post/new/', views.post_new, name='post_new'),
    path('post/<int:pk>/', views.post_detail, name='post_detail'),
    re_path(r'^(?P<username>[\w.@+-]+)/$', views.user_page, name='user_page')
]
post-custom-banner

0개의 댓글