템플릿의 링크에서 상대 경로 방식을 쓸 수 있나요?

250 views
Skip to first unread message

bluekyu

unread,
Jan 13, 2012, 10:50:18 AM1/13/12
to Django-ko
장고에서 url 처리 관련하여 질문이 있어서 글을 올립니다.

현재 아파치에서 mod_wsgi의 WSGIScriptAlias로 장고의 경로를 /project 로 주고 있습니다. 그래서 도메
인 주소로 www.example.com/project로 들어갈 시에 장고가 작동하고 있습니다.

그래서 urls.py에서 경로를 설정해주면 www.example.com/project/... 과 같이 /project/ 뒤에 경
로의 패턴을 인식합니다.

그런데 템플릿에서 href로 링크를 생성하게 되면 경로가 아파치 문서의 루트 경로부터 시작이 됩니다. 즉,
href="test"와 같이 하면 www.example.com/test의 주소가 링크 경로로 설정됩니다.

원하는 바는 www.example.com/project/test와 같은 경로인데, 템플릿 문서 내에서는 href 경로가
urls.py와는 다르게 인식이 되네요.

이것에 관해서 해결 방법이 있나요?

이상적으로는 일반 html 처럼 상대 경로를 사용하면 좋을 텐데, 그것도 가능하지 않는 것 같습니다.
추가로, 검색을 해서 찾아보니까, ../test와 같이 상대 경로 방식을 쓰지 말고, 절대 경로 방식으로 써야만 하고, 더 나
은 방법으로는 {% url %} 태그를 사용해서 뷰의 페이지를 호출하면 된다는 데, 이렇게 사용하는 방법 뿐인가요?
(일단은 {% url path-to-view %} 태그 방식을 사용하니까 잘 작동하는 것을 확인했습니다.)

이순연

unread,
Jan 13, 2012, 1:39:56 PM1/13/12
to djan...@googlegroups.com
안녕하세요.

WSGIScriptAlias 를 "/" 가 아닌 "/project"로 설정을 하면 말씀하신 것과 같은 문제가 발생할 수 있겠군요.
{% url %} 태그를 사용해 정상적으로 URL을 출력하려면 urls.py에서 모든 경로에 /project를 더하는 방법 밖에 없을 것으로 보입니다. 아래와 같이

urls.py ==>

url(r

'^project/test$', 'test.views.home', name='test_home'),
template.html ==>

{% url 'test_home' %}


그리고 템플릿 내에서 상대경로를 사용하는 것도 가능한데... 어떤 경우를 말씀하시는지 정확치가 않네요. href="/project/test" 로 입력하면 되는 것은 아닌지요^^





2012년 1월 14일 오전 12:50, bluekyu <bluek...@gmail.com>님의 말:

--
Google 그룹스 'Django-ko' 그룹에 가입했으므로 본 메일이 전송되었습니다.
이 그룹에 게시하려면 djan...@googlegroups.com(으)로 이메일을 보내세요.
그룹에서 탈퇴하려면 django-ko+...@googlegroups.com로 이메일을 보내주세요.
더 많은 옵션을 보려면 http://groups.google.com/group/django-ko?hl=ko에서 그룹을 방문하세요.




--
-------------------------
유하소프트 이 순연
010-4278-1346



bluekyu

unread,
Jan 14, 2012, 2:55:05 AM1/14/12
to Django-ko
답변 감사합니다. 오늘도 저 문제 관련해서 여러 시도를 해보다가 템플릿에서도 상대 경로가 가능한 것을 확인했습니다.

어찌어찌 해서 아파치 설정을 조금 건드려보니, 장고 프로젝트의 루트 페이지가 www.example.com/project 처럼 되
어서 상대 경로를 쓸 수 있게 되긴 했습니다.
그런데 바꾼 아파치 설정이 일부 동작하지 않는 부분이 있어서 복구 시키니까, 다시 루트 페이지가 www.example.com
로 변경되네요.

결국 url 태그를 계속 사용하는 것이 나은 방법 같습니다. 그리고 추가로 찾아보니, settings 파일에서 현재 프로젝트의
url 상수를 도입해서 href 사용 시에 붙여주는 방법도 한 가지 방법인 것 같습니다.

On 1월14일, 오전3시39분, 이순연 <lee.soony...@gmail.com> wrote:
> 안녕하세요.
>
> WSGIScriptAlias 를 "/" 가 아닌 "/project"로 설정을 하면 말씀하신 것과 같은 문제가 발생할 수 있겠군요.
> {% url %} 태그를 사용해 정상적으로 URL을 출력하려면 urls.py에서 모든 경로에 /project를 더하는 방법 밖에 없을
> 것으로 보입니다. 아래와 같이
>
> urls.py ==>
>
> url(r
> '^project/test$', 'test.views.home', name='test_home'),
> template.html ==>
>
> {% url 'test_home' %}
>
> 그리고 템플릿 내에서 상대경로를 사용하는 것도 가능한데... 어떤 경우를 말씀하시는지 정확치가 않네요. href="/project/test"
> 로 입력하면 되는 것은 아닌지요^^
>

> 2012년 1월 14일 오전 12:50, bluekyu <bluekyu....@gmail.com>님의 말:


>
>
>
>
>
>
>
>
>
> > 장고에서 url 처리 관련하여 질문이 있어서 글을 올립니다.
>
> > 현재 아파치에서 mod_wsgi의 WSGIScriptAlias로 장고의 경로를 /project 로 주고 있습니다. 그래서 도메

> > 인 주소로www.example.com/project로들어갈 시에 장고가 작동하고 있습니다.
>
> > 그래서 urls.py에서 경로를 설정해주면www.example.com/project/... 과 같이 /project/ 뒤에 경


> > 로의 패턴을 인식합니다.
>
> > 그런데 템플릿에서 href로 링크를 생성하게 되면 경로가 아파치 문서의 루트 경로부터 시작이 됩니다. 즉,
> > href="test"와 같이 하면www.example.com/test의주소가 링크 경로로 설정됩니다.
>

> > 원하는 바는www.example.com/project/test와같은 경로인데, 템플릿 문서 내에서는 href 경로가


> > urls.py와는 다르게 인식이 되네요.
>
> > 이것에 관해서 해결 방법이 있나요?
>
> > 이상적으로는 일반 html 처럼 상대 경로를 사용하면 좋을 텐데, 그것도 가능하지 않는 것 같습니다.
> > 추가로, 검색을 해서 찾아보니까, ../test와 같이 상대 경로 방식을 쓰지 말고, 절대 경로 방식으로 써야만 하고, 더 나
> > 은 방법으로는 {% url %} 태그를 사용해서 뷰의 페이지를 호출하면 된다는 데, 이렇게 사용하는 방법 뿐인가요?
> > (일단은 {% url path-to-view %} 태그 방식을 사용하니까 잘 작동하는 것을 확인했습니다.)
>
> > --
> > Google 그룹스 'Django-ko' 그룹에 가입했으므로 본 메일이 전송되었습니다.
> > 이 그룹에 게시하려면 djan...@googlegroups.com(으)로 이메일을 보내세요.
> > 그룹에서 탈퇴하려면 django-ko+...@googlegroups.com로 이메일을 보내주세요.

> > 더 많은 옵션을 보려면http://groups.google.com/group/django-ko?hl=ko에서 그룹을 방문하세요.


>
> --
> -------------------------
> 유하소프트 이 순연
> 010-4278-1346

> l <o...@youhasoft.com>ee.soony...@gmail.com

Reply all
Reply to author
Forward
0 new messages