21.08.25_Django(with,주석,특수문자,사이트공통양식)
4960 단어 djangohtmldailystudydailystudy
Django
변수명
HTML
django template
탬플릿은 단순 텍스트 언어로 html 작성에 편의성을 제공한다.{{변수명}} : views 에서 content 로 보내준 dictionary 자료 의 'name' 값을 입력하여 'value' 값을 반환한다.
>>{{변수명|필터명}} : 필터를 사용하여 변수의 표시 형식 변형 가능
ex) default : 변수가 비어있는 경우, default 값을 사용 {{ value|default:"nothing" }} value 가 제공되지 않는다면 nothing을 반환 length : 값의 길이를 출력한다. {{ value|length }} value = ['a','b','c'] 라면 4를 반환
참고블로그
today - online
아... 진짜 열심히 했는데.. 날렸어요 ㅠㅠ.. 지금 12시라서 ... 다시 작성하기엔 너무 늦었고간단하게 메모만..
오늘 배운 것은 django의 template으로 html을 보다 편하게 사용할 수있다. {% %} 와 같은 표현을 사용하여 python에서 사용하는 함수들 표현 하는게 가능하고
with
{% with n=111 %} {{n}} {% endwith %}위와 같이 사용 할 경우 with 구문 내에서 'n'이라는 변수를 사용 할 수 있다.
endwith이 선언된 외부에서는 'n'이란 변수를 사용할 수는 없다.
with 활용1.
{% with name=info1.name %} 이름: {{ name }}<br> 이름: {{ name }}<br> 이름: {{ name }}<br> {% endwith %} 이름: {{ name }}<br>위에서는 views에서 작성한 class를 사용한 것이다.
class Info: def __init__(self, name, age): #생성자 self.name = name self.age = age def __str__(self): return "Info[%s, %d]" % (self.name, self.age)현재 views 에서 info1에는 Info('홍길동',20)으로 선언 후 context(딕션) 형식으로
template으로 보내주었다.
{% with name=info1.name %} : '홍길동' 을 name(변수명)으로 선언
즉, 위의 코드는 이와같이 표현된다.
이름: 홍길동 이름: 홍길동 이름: 홍길동 이름:마지막의 '이름: '의 경우 endwith이 선언된 이후에 작성되었기 때문에
{{ name }}에 저장된 값이 없다.
지금 생각해보면 {{name|default:'이름없음'}} 이와 같이 사용했다면 '이름: 이름없음' 이라고 표현할 수 있을것같다.
with 활용2.
{% with info1.name as name %} 이름: {{ name }}<br> 이름: {{ name }}<br> 이름: {{ name }}<br> {% endwith %} 이름: {{ name }}<br>위의 사용 방식 또한 info1.name의 값을 name(변수명)으로 선언한다.
형태만 다르고 활용1과 같은 역활을 한다.
주석
django template 에서 주석은1. {# 템플릿 싱글라인 주석 #} 2. {% comment '설명문자열' %} 템플릿 멀티 라인 주석 {% endcomment %}이처럼 두가지 방식으로 표현 할 수있다.
HTML역시 주석 처리가 가능한데 HTML은
<!-- 주석 내용 -->으로 주석을 표현할 수 있다.
특수문자
html에서 태그 사용되는 <,>,& 와 같은 특수문자는 화면상으로 표현하기 위해서는< : < > : > & : &이와 같이 표현 할 수 있다. 하지만 이 방법은 특수문자를 일일히 표현하는데 불편하다.
이것을 django의 template에서 autoescape on,off를 사용하여 간단히 표현 할 수 있다.
{% autoescape off %} {{ value }} {% endautoescape %}위 코드를 사용 시 화면 상에 간단히
{{ value }}를 표현 할 수 있다.
사이트 양식 적용
{# 모든 템플릿의 기본 베이스 in 'extemp/base.html' #} <!DOCTYPE html> <html> <head> <meta charset="utf-8"/> <title>{% block title %}title{% endblock %} </head> <body> <div>상단 메뉴 <a href="{% url 'extemp:index' %}">Home <hr> <h3>{% block headline %}headline{% endblock %} {% block content %}Empty is Content{% endblock %} <hr> <div>하단공통메뉴 </body> </html>위 html 파일을 작성, template에서 base.html 파일을 활용 하는 것으로
사이트의 공통된 양식을 불러올 수 있다.
딩 시 동일한 툴의 사이트를 만들때의 과정을 쉽게 해준다.
{% block title %} 을 사용하여 title 작성 위치를 표현
<body>의 내용은 base.html을 불러오는 모든 화면에서 표현되며
{% block headline %} 을 사용하여 머릿말 내용을 사이트마다 설정 할 수 있고
{% block cotent %} 안에 각 <body>의 내용이 들어가게된다.
해당 사이트의 <body>의 내용이 표현된 후 <div>하단공통메뉴 가 표현된다.
{% extends 'extemp/base.html' %} {% block title %}ex01{% endblock %} {% block headline %}예제1{% endblock %} {% block content %} n1:{{ n1 }}<br> lst:{{ lst }}<br> lst.0:{{ lst.0 }}<br> lst.1:{{ lst.1 }}<br> {{ lst.0 }}, {{ lst.1 }}<br> {{ tup.1 }}, {{ tup.2 }}<br> {{ dic.a }}, {{ dic.c }}<br> unknown : [{{ un }}]<br> {% endblock %}{% extends 'extemp/base.html' %}을 선언하여 base.html을 불러온다.
각각의 block에 필요한 값을 넣어줌으로써 사이트를 표현 할 수 있다.
coment
으악 ㅠㅠ 다시 정리해서 올렸는데 1시간 이 훌쩍 넘었네요. 일단 처음에 날린것보다는 디테일이 부족한데 한번 정리한걸 다시 작성하니깐 쫌 깔끔하게 쓸 수 었어요. 내일은 django 뿐만아니라 c언어도 정리 할 시간을 챙겨야겠네요.
Author And Source
이 문제에 관하여(21.08.25_Django(with,주석,특수문자,사이트공통양식)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@yang09280216/21.08.25저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)