안녕하세요 두번째로 질문드리네요…ㅜㅜ 전과 같은 상황입니다. 이번에는 urls.py,

 
전재혁

안녕하세요 두번째로 질문드리네요…ㅜㅜ
전과 같은 상황입니다. 이번에는 urls.py, views.py랑 템플릿을 짜다가 막히는 부분이 있어서 질문드립니다…
1. ForeignKey(저의 경우, 카테고리)와 Many-to-Many(저의 경우, 태그)가 지정된 게시물(저의 경우에는 파일 서버라서 파일)이 db에 저장되어 있는 상태입니다.
외부에서 접속해서 주어진 조건(카테고리는 ‘풍경’, 태그는 [‘길냥이’, ‘나들이’, ‘심쿵] 막 이런식으로)을 url로 입력하면 바로 인자로 넘겨지도록 해주고 싶습니다.
(위 예제의 경우에는 대충 이런식으로 되겠군요 -> http://example.org/server/category_풍경/tag_길냥이_나들이_심쿵/ 을 입력하면 인자로 category=’풍경’, tags=[‘길냥이’, ‘나들이’, ‘심쿵’]을 던져주게 합니다).
urls.py에 들어가는 regex로 무엇을 주면 좋을까요? 제가 정규식에 익숙하지 않아서 가능한데 못하는것인지 아니면 비효율적인 구조를 생각해낸 것인지 모르겠습니다.
2. 현재 models.py에서 File 모델을 정의했습니다(이름이 중첩되는게 비권장이긴 한데… 수정할 엄두가…ㅜㅜ). 그런데 실제 파일이 들어가는 FileField를 지정해뒀는데, DB에서 불러오면 절대경로를 부르네요… 그래서 template에서 {{ file.file }}을 부르니 브라우저에서 파일을 찾을 수 없다는 오류가 뜨고, 링크를 보니 엄청네요… 어떻게 부를 수 있을까요?

p.s 템플릿은 아직 짜고있는 중입니다… MEDIA_URL은 현재 /media/로 설정해 뒀습니다. 브라우저 오류부분에서 모자이크 해둔 부분은 서버 내 디렉토리 절대경로가 나와서 주소랑 같이 모자이크 해뒀구요…

  • 전재혁

    첫번째 사진 조금 생각해보니 위쪽 show_file.html에만 모자이크 해두고 아래쪽 views.target엔 안해뒀네요… ㅜ 같은 내용입니다

    Chinseok Lee

    FileField/ImageField 에 대해서 .path 속성과 .url 속성이 있습니다. 각 FileField/ImageField 에 대해 실제 DB에는 실제 저장경로가 저장됩니다. settings.MEDIA_ROOT 의 하위 경로입니다.
    – .path 속성 : DB 에 저장된 경로와 settings.MEDIA_ROOT 를 조합한 경로를 리턴해줍니다. 파일시스템 상의 절대경로가 됩니다.
    – .url 속성 : DB 에 저장된 경로와 settings.MEDIA_URL 을 조합한 경로를 리턴해줍니다. 그 파일에 대한 URL 경로를 만들어주는 것이죠.

    – Ask Django

    Chinseok Lee

    위와 같이 쓰실 경우 GET 인자로 처리하시는 것이 더 좋아보입니다.

    /sever/category_풍경/?tag=길냥이&tag=나들이&tag=심쿵

    뷰에서는 request.GET.getlist(‘tag’)

    전재혁

    정말 감사합니다 ㅜㅜ 복잡한 인자의 경우에는 그냥 GET으로 받는게 속편하군요…

    박영록

    복합 인자가 아니라도 필터링 조건은 parameter로 받는 게 좋아요. 요즘 유행하는 restful 스타일로 url을 설계한다면 /posts?category=풍경&tag=길냥이&tag=나들이 이런 식으로 할 수도 있을 듯.

    전재혁

    감사합니다 ㅜㅜㅜ
    조언해주신대로 .url로 바꿔보니 이번엔 media/를 붙이고 절대경로가 나오는걸 보고 db를 확인해보니 입력해줬던 모든 인자가 절대경로로 저장이 되어있네요… 다 상대경로로 바꿔줘야겠죠…?

Advertisements