목록전체 글 (214)
파파비의 블로그
404 에러를 내는 방법은 크게 2가지가 있다. 1) render_to_string > HttpResponseNotFound() 사용하기 - 좀 돌아가는 방법이다. - render의 과정을 거쳐야하고, render() 함수를 사용할 수는 없다. render는 404 에러를 브라우저에 나타내지 않기 때문이다. 2) shortcut인 HTTP404 - rasie HTTP404() 를 실행하면, - template 안에 404.html 파일을 찾아나서고 해당 파일을 보여준다. - 파일이름을 404.html로 잘 설정해두는 것이 중요하다
템플릿 전체가 아니라, 일부만을 사용하고 싶을 때가 있을 것이다. HTML의 일부 덩어리들 말이다. 그런 부분들은 include라는 tag를 활용한다. 먼저 따로 snippet으로 활용될 html을 다른 폴더에 만들어둔다. 폴더 및 파일의 이름은 자유롭게 해도 된다. includes 라는 폴더에 header 라는 html 파일을 만들어 두었다. header.html은 아주 간단하게 header에 nav 기능이 달린 것을 넣어두었고 변수도 하나 넣어두었다. 해당 html을 활용하기 위해선 include 태그를 이용해서 html 파일을 특정해준다. include 시 특이한 점은, 만약 저 해당 block에 var에 대한 값이 존재한다면 var에 자동으로 값이 부여된다는 점이다. var 변수가 특정되지 않을 ..
Django 를 활용하여 HTML 파일들을 사용하다보면, 중복되는 코드들이 많이 생길 때가 많다. HTML의 기본적인 뼈대 부분은 사실상 거의 중복이 많이된다. 그래서 내용이 바뀌는 부분만 HTML에 표시하고, 나머지 부분은 그대로 활용하는 것이 가능하다. 그것이 상속의 개념과 비슷해서 Inheritance라고 부르나보다 방식은 Block Tag를 사용하는 것이다. 1) base html 준비하기 여러번 활용될 base html 파일안에, dynamic하게 활용될 부분에 block tag를 심어둔다. 여기에는 2개의 block tag가 존재한다. title 쪽과 body 쪽이다. 이제 우리는 이 틀을 활용하면 각 block에 들어갈 내용들만 넣은 html을 활용할 수 있다. 2) 활용하기 1. exten..
Tag는 filter랑 다른 또 다른 Django Tamplates Language 중 하나이다. Tag를 통해 다양한 기능들을 할 수 있는데, 가령 for 문을 돌리는 것이다. list를 주면, 그 리스트의 개수만큼 돌리는 작업을 해야할 때, 우리는 for을 tag를 사용하여 template을 만들 수 있다. Tag는 {{ }} 이 아닌, {% %} 로 구성된다 만약 for문이라면, list item을 생성한다고 예를 들어보면 {% for a in b %} {{ a }} {% endfor %} 이렇게 구성을 할 수 있다. 참고로 for 의 a는 block안에서 얼마든지 접근 가능하다. 아래 링크를 참고하면 다양한 tags / fliters 에 대한 것들을 확인할 수 있다. https://docs.dja..
template에 dynamic하게 내용을 입력할 때, 우리는 .capitalize() 라던가 등의 formatting 작업을 하기도 한다. 그런데 이런 로직들을 view에서 하는 것보다는, view에서는 비즈니스 로직에 집중하고, 형식과 같은 formatting은 템플릿 자체 내에서하는 것이 깔끔하고 좋다. 그렇게 하기 위한 기능으로 filter 라는 것들이 있다. filter란, template 안에 {{ }} 부분에 | 를 통해 특정 기능을 추가하는 것을 말한다. {{ key | title }} 이렇게 하게 되면 title이라는 필터가 생겨 key의 값이 어떤 것이든 첫글자가 대문자가 된다. 참고) 대표적인 filter 들을 확인할 수 있음 https://www.geeksforgeeks.org/dj..
url 입력이 숫자로 들어왔을 경우 (예 1,2,3,4,5...12) 우리는 january...december까지 설정해두었을 때, 1 > january 로 바꾸게 리다이렉팅을 할 수 있다. 처음에는 view 내에서, 또 다른 view를 불러서 처리하면 되지 않는가 생각했지만 url이 다르게 표시되기 때문에, 리다이렉팅이 더 좋겠다고 생각하게 되었다. 리다이렉팅하면 url도 바뀌기 때문 리다이렉팅은 httpresponseredirect 메소드를 활용하고 그 안에 url을 넣어주면 된다. 참고로 dic.keys()는 list 화 해주어야한다. 아니면 type이 dict_keys 여서 list처럼 작동하진 않는다. 그런데, 여기 위에 보면 url이 하드코딩되어 있다. 하드코딩이 되어 있으면 하나의 수정에도 ..
Url 값을 설정해서, 이 것에 따라 이런 view를 실행하라~ 라고 한다면, 매번 특정 url 값에 대한 설정이 필요하다. 그러면 엄청나게 많은 설정이 필요할 것이다. 그리고 블로그처럼, post가 생겨날때에 대해, 즉 미래에 대한 url 값 대응이 불가능하다. 그래서 결국 dynamic한 url -> view 연결이 필요하다. 1) url pattern 에 dynamic하게 설정하기 > 원래 url.py > path pattern 속에는 원하는 키워드 url을 입력했다. 그러나 이것을 dynamic하게 해보자 > 그러기 위해선 를 쓴다. 그리고 그 안에 원하는 변수명을 넣어준다. 2) view.monthy_challenge 뷰 만들기 > monthy_challenge 뷰에서 중요한 것은 dynamic..
Django project를 만들면, 그 안에는 프로젝트 이름과 동일한 폴더가 하나 만들어진다. 그것은 project 전반에 관한 configuration을 다룬다. project안에 app을 만들어 거기에 coding을 시작한다. app은 사실상 module이라고 이해하면 된다. 그래서 하나의 app으로 모든 코드를 담당해도 되고, 구조적으로 이해하기 쉽고 관리하기 쉽게하기 위해 여러개의 app으로 만들어 project를 설계할 수도 있다. project 내 app을 만드는 방법은 쉽다. 해당 프로젝트의 터미널로 가서 python manage.py startapp 을 하면 새롭게 폴더가 만들어진다. challenges 라는 app을 만들어보자 터미널에 'python manage.py startapp c..