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.)