inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트

템플릿 레이아웃에 링크 추가하기

url reverse 설계

267

정중한 앵무새

작성한 질문수 17

0

강사님 안녕하세요.

accounts에서 회원가입, 로그인, 로그아웃, 프로필을 설정 중인데요,

아래와 같이 url 링크를 설정해줄 시, 

어느 앱의 링크인지 구별을 해주기 위해 아래와 같이 작성해야 한다고 생각했지만 작성 후 NoReverseMatch 에러가 뜹니다.

{% url "accounts:profile" %}

어떻게 전체 레이아웃에서 {% url 'profile'  %}만 가지고 accounts/profile로 이동이 가능한가요? 
감사합니다.

 

url python react docker django

답변 3

1

이진석

안녕하세요.

url reverse 시에 콜론(:) 앞에 입력하는 이름을 앱의 namespace라고 하며, 이를 사용하기 위해서는

그 앱의 urls.py 내에 app_name 설정을 하셔야 합니다.

accounts/urls.py 내에 app_name 설정을 하지 않으시면 {% "profile" %} 로 쓰셔야 하며,

accounts/urls.py 내에 app_name = "accounts" 설정을 하셨다면, 필히 {% url "accounts:profile" %} 로만 쓰셔야 합니다.

0

이진석

안녕하세요.

장고의 URL Reverse는 직접적으로 view 함수를 찾는 것이 아니라, urlpatterns에 등록된 path를 찾습니다.

accounts/urls.py 이 다음과 같이 되어있을 때,

urlpatterns = [
path("profile/", views.profile, name="profile"),
]

{% url "profile" %} 과 같이 쓰시면 등록된 path 중에 name이 "profile"인 것을 찾아서, 역으로 url 문자열을 계산해내는 것입니다.

현재 프로젝트에 등록된 모든 urlpatterns 목록을 확인코자하신다면 django-extensions 라이브러리에서 제공되는 show_urls 명령을 써보세요.

https://django-extensions.readthedocs.io/en/latest/command_extensions.html?highlight=show_urls#command-extensions

그리고 urlpatterns에는 모든 앱들의 path들이 list로 하나로 합쳐서 등록이 되어있구요. url reverse 시에 리스트에 등록된 첫 path부터 순차적으로 부합여부를 체킹하게 됩니다.

0

정중한 앵무새

답변 감사합니다 선생님!

다만 제 질문은 {% url "profile" %}만으로 장고에서 어떻게 accounts/profile url로 인식하는지가 궁급했습니다.

Instagram에 profile링크가 있다면 instagram/profile url과 충돌이 일어나지 않을까 해서 여쭙니다.

안녕하세요.

0

48

1

[OneToOne Field Demo] get_user_model() 메서드를 활용해야 하는 이유?

0

273

1

useEffect 훅에서 else 유무에 따른 결과

0

211

1

useAxios 훅의 dependency array 설정

0

245

1

useEffect에서 변수 업데이트 관련 질문

0

381

1

rest_framework.generics.CreateAPIView의 model 속성 유무

0

266

1

bootstrap4

0

470

4

리뉴얼 강의가 오픈이 되면 기존 강의는 더이상 못보는걸까요

1

363

1

admin form에서 앞선 필드 선택 후 다른 필드 select widget 구성하는 방법

0

572

3

useState는 필수일까요?

0

261

1

python manage.py makemigrations instagram 시 created_at default 오류가 발생합니다.

0

597

4

Django allauth를 사용한 소셜 로그인 시 에러

0

654

1

프로젝트명 변경 뒤, 디버그툴바+디버그모드 사용 시 에러

0

552

2

useLocalStorage() 함수 사용여부

0

228

1

django에 LOGIN_URL = '/accounts/login/'의 의미?

0

448

1

리듀서의 의미 재확인

0

430

1

simple-jwt Refresh Token 사용 노하우

0

897

2

docker compose 를 통한 배포 관련 오류 문의

0

670

1

파이썬 속도 장고 관련 궁금한게 있습니다.

0

364

1

is_like_user

0

233

1

related_name 오류

0

272

1

re_path 오류

0

258

1

re_path url

0

249

1

No post matches the given query

0

660

2