오늘 한 것
팀 프로젝트 SA문서 수정
팀 프로젝트 코드 테스트 및 충돌 조율
팀 프로젝트 profile 페이지 template 구현-modal
팀 프로젝트 글 category 구현 - query parameter, path variable
.gitignore: 추적하지 않는 폴더 중 일부 파일만 변경사항 추적하기
모델이 지속적으로 수정되는 중인데 migrations 폴더 안의 내용물이 이 레포에서 저 레포로 옮겨다니다 보니 아주 정신사납다.
그래서 해당 폴더 자체를 추적하지 못하게 하자니, 처음 클론받는 사람이 __init__.py 파일이 없어 곤란을 겪지 않을까 싶다.
그래서 그 파일만 추적하도록 하고 싶다.
해결:
위와같이 파일 경로 앞에 '!' 를 쓰면된다.
favicon 404: 빠삐코도 아니고 넌 뭐니
일단 favicon이 무엇인지 찾아보니
이 작은 아이콘이 파비콘이라고 한다. 해당 오류는 파비콘을 경로로 불러오는데 실제로 파일이 존재하지 않을 때 생기는 오류이지만 실행에 큰 문제가 되지는 않는다고 한다.
이 오류를 보이지 않게 하는법에 대해 여러 곳에서 다양한 의견을 볼 수 있었는데
1. 파비콘 아이콘 만들어 주기: 가장 정상적인(?) 방법이다.
<link rel="shortcut icon" type="image/x-icon" href="favicon.ico" />
파비콘 아이콘을 만들어 위와 같은 코드를 head 태그안에 넣어주면 된다. ico 파일은 https://convertico.com/#google_vignette 와 같은 사이트를 이용해 만들면 된다.
2. '#'
<link rel="shortcut icon" href="#">
위와 같이 의미없는 식별자를 넣어 무시할 수 있다.
3. 특수한 코드
<link rel="icon" href="data:;base64,iVBORw0KGgo=">
2번의 경우 자바 등 일부 언어에서는 불필요한 중복 호출이 발생한다고 하다. 3번을 사용하면 그러한 문제 없이 오류를 없앨 수 있다고 하는데 어떻게 작동하는 지는 아직 이해하지 못했다.
걍 하나 만들어서 넣어주자.
장고 템플릿 에서의 슬라이싱
포스트의 내용 부분을 짧게 앞부분만 뽑아내서 브라우저에 표시하고 싶었다. 그래서 문자열 슬라이싱이 필요하긴한데, 그걸 백엔드에서 하려고 하니 한번에 모델 객체를 보내던 것에서 가공된 객체의 속성들을 따로 보내는 것으로 전환해야하는 것이 영 탐탁치 않았다. 그래서 템플릿에서 슬라이싱을 해보려 한다.
시도 1. 파이썬처럼해보기
장고 템플릿이 파이썬을 이용해 html을 동적으로 만드는 거라고 해서 위와같이 무지성으로 슬라이싱을 해보니 당연히 안먹혔다.
해결: 찾아봤다.
{# index 2에서 7까지 #}
{{ string|slice:"2:8" }}
{# index 0혹은 처음부터 7까지#}
{{ temp_var|slice:":8" }}
{# index 1에서 마지막까지 #}
{{ temp_var|slice:"1:" }}
{# index 처음부터 끝까지 #}
{{ temp_var|slice:":" }}
장고 템플릿에서는 위와같이 슬라이싱을 한다고 한다.
query parameter 와 path variable의 차이에 대해
글목록을 카테고리 별로 모아보는 기능을 만드는데, 새로운 API를 지정하지 않고 현재 있는 API만을 이용해서 만들고 싶었다. 이를 위해 query parameter에 대해 알게 되어 이를 사용하였다. 그런데 url을 통해 데이터를 실어나른다는 점이 path variable과 동일하다고 생각해 어떤 차이가 있는지 알아보았다.
결론적으로 형식과 사용목적에 차이가 있었다.
1.형식
쿼리 파라미터:
url/234?id=12&page=2
path variable
url/234
url로 브라우저가 백엔드에 요청을 보낼때의 형식은 위와 같다.
이것을 장고가 받아들이는 방식은 다음과 같다.
# query parameter
# veiws.py
def fucntion_view(request):
if requset.method=="GET":
data1=request.GET.get("parameterkey","")
# path variable
# urls.py
urlpatterns = [
# profile 페이지 조회,수정
path('api/profile/<int:id>', views.profile_view, name='profile'),
]
# views.py
def fucntion_view(request, id):
...
2. 사용의 목적
If you want to identify a resource, you should use Path Variable. But if you want to sort or filter items, then you should use query parameter.
자원(데이터)의 식별이 목적일 경우엔 path variable을, 정렬/필터링 등 말 그대로 데이터 베이스 쿼리와 비슷한 역할이 필요할 경우엔 query parameter를 사용하는 것이 가장 좋은 용례라고 한다. 물론 다른 방식으로 이용할 수도 있으나, 협업을 고려했을 때 이러한 목적을 지켜가며 쓰는 것이 좋다.
레퍼런스
https://stackoverflow.com/questions/23422542/slicing-a-list-in-django-template
Slicing a list in Django template
If I want to get first 5 elements from a list I would do mylist|slice:"5" but I want a range, let say from 3 to 7. something like mylist[3:8] how would I do that in template
stackoverflow.com
https://jsikim1.tistory.com/32
Favicon Make and Insert (파비콘 만들기, 삽입하기)
Favicon Make and Insert (파비콘 만들기, 삽입하기) Favicon은 favorites과 icon이 합쳐진 것으로, 인터넷 웹 브라우저의 타이틀에 표시되는 웹 사이트를 대표하는 아이콘을 말합니다. 파비콘은 .ico 확장자를
jsikim1.tistory.com
https://stackoverflow.com/questions/1321878/how-to-prevent-favicon-ico-requests
How to prevent favicon.ico requests?
I don't have a favicon.ico, but my browser always makes a request for it. Is it possible to prevent the browser from making a request for the favicon from my site? Maybe some META-TAG in the HTML h...
stackoverflow.com
https://ryan-han.com/post/translated/pathvariable_queryparam/
[번역] Path Variable과 Query Parameter는 언제 사용해야 할까? | Integerous DevLog
[번역] Path Variable과 Query Parameter는 언제 사용해야 할까? 2019/04/23 원작자의 허락을 받고 번역한 글입니다. 원문: When Should You Use Path Variable and Query Parameter? *역자 주: Spring boot와 Vue.js로 파일럿 프로
ryan-han.com
'TIL' 카테고리의 다른 글
23. 04.17 TIL (1) | 2023.04.17 |
---|---|
23.04.14 TIL(django웹서비스에 image업로드 구현) (1) | 2023.04.16 |
23.04.12 TIL (0) | 2023.04.12 |
23.04.11 TIL(팀플개발일지) (0) | 2023.04.12 |
23.04.10 TIL(팀플 개발일지) (2) | 2023.04.11 |