Django 보기 함수 Django 모듈 시스템, 필터, 레이블

19294 단어 django
요청 프로세스 및 보기 함수
프로세스
(1) .서버를 시작하여 클라이언트가 연결하기를 기다리다
(2) .브라우저에서 요청을 보내고 wsgiref를 통과합니다.py 모듈.
(3) .집행urls.py의 목록입니다. URL과 목록의 매개 변수가 일치하도록 요청합니다.
(4) .일치된 후에 대응하는 보기 함수를 실행합니다.
(5) .브라우저에 결과를 반환합니다.
(6) .연결 끊기
보기 함수
(1) .함수 명칭은 임의이지만 일반적으로 명지의를 보아야 한다.
(2) .함수에는 최소한 하나의 인자가 있습니다. 일반적으로 Request라고 명명되고, Request 인자는django입니다.http 모듈의 HttpRequest 클래스의 한 대상은 요청 경로, 파라미터 등 모든 요청 정보를 포함합니다.
(3) .반환 값 HttpResponse의 인스턴스는 브라우저에 텍스트 정보를 반환합니다.
views.py 파일
일반적으로 우리는 보기 함수를 스크립트 파일에 단독으로 씁니다. 일반적인 이름은views입니다.py
Django 모듈 시스템
템플릿 시스템
페이지에 컨텐트 채우기
템플릿 시스템 공통 기호
템플릿에서 변수를 해석하려면 {{}}}
템플릿에서 논리 관련 작업을 하는 경우 {%}
주석 {#...#}, 한 줄 주석 [ctrl+/], 여러 줄 주석 [ctrl+ship+/]
변량
Django의 템플릿 시스템에서 변수에 사용되는 구문: {변수 이름}.
모델 엔진이 변수를 만나면 값으로 변수를 바꿉니다.
변수의 이름은 영숫자와 밑줄("")이 될 수 있습니다.라는 조합을 이뤘다.변수 이름에는 공백이나 문장부호가 있을 수 없습니다.
사용한 변수가 존재하지 않으면 기본적으로 (빈 문자열) 로 설정됩니다.
HTML    :{{name}} {{age}}{{height}}

     
def third(request):
     return render(request,'third.html',{'name':'  ','age':38,'height':1.79})
#     key   ,      values 。
  
def third2(request):
    name='  '
    age=19
    height=1.7
    print(locals())
    # return render(request,'third2.html',{'name':name,'age':age,'height':hight})
    return render(request,'third2.html',locals())

url.py  
urlpatterns = [
    path('admin/', admin.site.urls),
    path('third/',view.third) ——》  ,   。
]

점(.)의 특수한 의미
템플릿 시스템이 지점 (".") 을 만났을 때다음 순서로 질의합니다.
사전 조회: 만약 페이지에 사전 형식 변수, 변수 이름을 전달한다면.키 획득 값,
속성 또는 방법 조회: 대상을 전달하면 변수 이름입니다.변수 이름
(이 변수 이름은 속성일 수도 있고 매개 변수가 없는 방법 이름일 수도 있습니다.)디지털 인덱스 조회: 목록을 전달하면 변수 이름입니다.색인
view.py   
def index02(request):
    """      """
    data = {'name': '  '}
    return render(request, 'index02.html', {'data': data})

class Person(object):
    def __init__(self, name):
        self.name = name

    def dream(self):
        return "{}         ".format(self.name)


def index03(request):
    """    """
    person = Person('  ')
    return render(request, 'index02.html', {'person': person})


def index04(request):
    """    """
    lst = ['zs', 'ls', 'ww']
    return render(request, 'index02.html', {'lst': lst})

html  
{{user_info.name}},  {{user_info.age}},  {{user_info.height}}
{  {{person.name}},  {{person.age}},  {{person.dream}}
{{ name_lst.0 }}——》{{ name_lst.1 }}——》{{ name_lst.2 }}

Filters(필터)
Django의 템플릿 언어에서 필터를 사용하여 변수의 표시를 변경합니다.(참고: 필터는 함수)
필터의 문법: {변수 이름 | 필터 이름: 매개 변수}
"|"파이프 문자를 사용하여 필터를 적용합니다.예를 들어: {{name | lower} 은name 변수를 lower 필터에 적용한 다음 값을 표시합니다.
default
default, 기본값을 지정합니다.변수가false이거나 비어 있으면 지정한 기본값을 사용합니다.그렇지 않으면 변수의 값을 사용합니다.
{{{value|default: "nothing"}------value가 전송되지 않았거나 값이 비어 있으면 nothing을 표시합니다
length
문자열과 목록에 적용되는 값의 길이를 되돌려줍니다.
{{{value|length},value의 길이를 되돌려줍니다.value=['a','b','c','d']와 같이 4.
slice
슬라이스
형식: {{value|slice: "2:-1"}, 두 번째 문자에서 마지막 문자로 되돌아옵니다.
date
날짜 서식 적용 필터
형식: {{{value|date: "Y-m-d H:i:s"} 아래에 굵기를 넣는 것이 일반적입니다.
  view.py 
import datetime
def third9(request):
    return render(request, 'third2.html', {'time':datetime.datetime.now() })
html
{{ time }}——》{{ time|date:'Y-m-d H:i:s' }}

서식 문자
묘사
샘플 출력
a
'a.m.'또는'p.m.'(PHP의 출력과는 약간 다르다. Associated Press 스타일에 맞는 기간을 포함하기 때문이다)
‘a.m.’
A
'AM'또는'PM'.
‘AM’
b
월, 문자, 세 글자, 소문자.
‘jan’
B
미실현
c
ISO 8601 형식입니다.(참고: 다른 포맷 프로그램과 달리'Z','O'또는'r'와 같이 값이 naive datetime이면'c'포맷 프로그램은 시간대 편이량을 추가하지 않습니다(datetime.tzinfo 참조).
2008-01-02T10:30:00.000123+02:00 또는 2008-01-02T10:30:00.000123 만약datetime가 천진하다면
d
달의 날, 앞의 0을 가진 두 자리 숫자.
'01'부터'31'까지.
D
일주일 동안의 문자, 세 자모.
"금요일"
e
시간대 이름은 어떤 형식일 수도 있고, 날짜 시간에 따라 빈 문자열을 되돌릴 수도 있습니다.
'','GMT','-500','US/Eastern'등
E
월, 특정 지역의 대체 표현은 일반적으로 긴 날짜 표현에 사용된다.
'listopada'('Listopad'가 아닌 폴란드어 영역)
f
시간은 12시간과 분 안에, 만약 그것들이 0이라면, 분에 머물게 된다.독점 확장성.
‘1’,‘1:30’
F
월, 문, 장.
'일월'
g
시간, 12시간 형식, 선행 0 없음.
'1'부터'12'까지.
G
시간, 24시간 형식, 선행 0 없음.
'0'부터'23'까지.
h
시간
'01'부터'12'까지.
H
시간
'00'부터'23'까지.
i
분 1
'00'부터'59'까지.
I
여름 시간, 효력이 발생하든 안 발생하든.
'1' 또는 '0'
j
전도가 없는 달의 날.
'1'부터'31'까지.
l
요일
'금요일'.
L
볼치가 윤년인지 아닌지.
True 또는 False
m
월, 2자리 숫자는 영을 띠고 있다.
'01'부터'12'까지.
M
월, 문자, 세 자모.
"양"
n
달은 전도가 없다.
'1'부터'12'까지.
N
미 연합사 스타일의 월 줄임말.독점 확장성.
‘Jan.’,‘Feb.’,‘March’,‘May’
o
ISO-8601주 번호, 윤년을 사용한 ISO-8601주수(W)에 해당합니다.더 일반적인 연도 형식은 Y 를 참조하십시오.
'1999년'.
O
그리니치 시간과의 차이는 몇 시간 안에 있다.
‘+0200’
P
시간은 12시간, 분과'a.m.'/'p.m.’,0, 분이 머무르면 특수한 경우 문자열 '자정' 과 '정오' 가 있습니다.독점 확장성.
‘1 am’,‘1:30 pm’/t3>,‘midnight’,‘noon’,‘12:30 pm’/T10>
r
RFC 5322 포맷 일자
‘Thu, 21 Dec 2000 16:01:07 +0200’
s
초, 영을 전도하는 두 자리 숫자.
'00'부터'59'까지.
S
한 달의 영문 서수 접미사, 2글자.
'st','nd','rd'또는'th'
t
달의 일수를 정하다.
28 to 31
T
이 컴퓨터의 시간대.
‘EST’,‘MDT’
u
마이크로초.
000000 to 999999
U
Unix Epoch 이후 2분의 1(1970년 1월 1일 00:00 UTC).
w
요일에는 숫자가 전도되지 않는다.
'0'(일요일)~'6'(토요일)
W
ISO-8601주, 월요일부터.
1,53
y
연도, 2자리 숫자.
‘99’
Y
년, 네 자리 수.
'1999년'.
z
일년 중의 날
0~365
Z
시간대 오프셋(초)입니다.UTC 서쪽 시간대의 오프셋은 항상 음수이고 UTC 동쪽 시간대의 오프셋은 항상 양수입니다.
-43200 ~ 43200
safe
Django의 템플릿에서 HTML 라벨과 JS 등 문법 라벨에 대해 자동으로 의미를 바꾸는 것은 안전을 위한 것이다.그러나 때때로 우리는 이러한 HTML 요소가 전의되는 것을 원하지 않을 수도 있다.만약 단독 변수라면 우리는 필터 "| safe"를 통해 Django에게 이 코드는 안전하고 전의할 필요가 없다는 것을 알려줄 수 있습니다.
cut
value에서 주어진 변수와 같은 모든 문자열을 제거합니다
형식: {{value | cut: '},value가' i love you '라면' ilove you '를 출력합니다.공백 잘라내기
join
Python의str.join (list) 과 같은 연결 목록을 사용하기
형식: {{value|join: ""}}value가 "asdf"인 경우 "a"출력s_d_f’
필터 고려 사항
  • '|'정도에 공백이 없음
  • django의 템플릿 언어는 약 60개의 내장 필터를 제공합니다.

  • 태그
    Django의 태그를 사용하면 템플릿에서 간단한 논리적 판단을 할 수 있습니다.
    태그는 {%} 와 함께 사용됩니다.
    for 태그
    <ul>
        {% for name in name_lst %}
    {#        <li>{{ forloop.counter }}{{ name }}li>  ( 1  )  counter0( 0  ) #}
    {#        <li>{{ forloop.revcounter }}{{ name }}li>   ( 1  )revcounter0( 0  )#}
    {#    <li>{{ forloop.revcounter0 }}—》{{ name }}—》{{ forloop.first }}—》{{forloop.last }}li>#}  {#       ,  #}
        {% endfor %}
    ul>
    

    for 순환에 사용할 수 있는 몇 가지 인자:
    Variable
    Description
    forloop.counter
    현재 순환하는 인덱스 값 (1부터)
    forloop.counter0
    현재 루프의 인덱스 값(0부터 시작)
    forloop.revcounter
    현재 순환의 역순 인덱스 값 (1부터)
    forloop.revcounter0
    현재 순환의 역순 인덱스 값 (0부터)
    forloop.first
    현재 순환은 첫 번째 순환입니까? (부울 값)
    forloop.last
    현재 순환이 마지막 순환입니까? (부울 값)
    for... empty 태그
    변수 이름이 존재하지 않거나 내용이 비어 있을 때 {%empty%}의 내용을 표시합니다. 그렇지 않으면 실행하지 않습니다.
      {% for name in name_list %}
    • {{ name }}
    • {% empty %} !!! {% endfor %}

    if 태그
    주:if문장은 and,or,==,,!=,<=,>=를 지원합니다.in, not in, is, is not 판단.
      {% if name|length > 15 %} ! {% else %} {% endif %}

    만약... elif... else 태그
    {% if name_length|length > 6 %}
              
    {% elif age == 20 %}
            
    {% else %}
           
    {% endif %}
    

    좋은 웹페이지 즐겨찾기