파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트 강의를 듣고 정리한 글입니다.
정규표현식을 이용해서 url 매칭을 수행해본다.
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 정규표현식 사용 시 주의사항
# 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')
]