flask 프레임 워 크 응용 (1)
7314 단어 python
Nginx (engine x) HTTP web , IMAP/POP3/SMTP 。
uWSGI Web , WSGI 、uwsgi、http 。
Framework , , , 、 。
Flask 가 뭐 예요?
Flask 는 웹 프레임 워 크 입 니 다. 웹 애플 리 케 이 션 을 구축 할 수 있 도록 도구, 라 이브 러 리, 기술 을 제공 하 는 것 입 니 다. 이 웹 애플 리 케 이 션 은 웹 페이지, 블 로그, 위 키, 웹 기반 달력 애플 리 케 이 션 이나 비 즈 니스 사이트 일 수 있 습 니 다.Flask 의존 모듈: 웹 서비스 게 이 트 웨 이 인터페이스 (Python Web Server Gateway Interface, WSGI (1) 라 고 약칭 합 니 다. Werkzeug 는 WSGI 공구 꾸러미 로 python 언어 를 정의 하 는 웹 서버 와 웹 응용 프로그램 또는 프레임 워 크 간 의 간단 하고 통용 되 는 핑계 이 며, 다른 언어 도 유사 한 인터페이스 가 있 습 니 다) (2). jinja 2 템 플 릿 엔진
Flask 의 우세
Flask 는 마이크로 프레임 워 크 (micro - framework) 라 는 유형 에 속 합 니 다. 마이크로 구 조 는 보통 외부 라 이브 러 리 에 의존 하지 않 는 작은 프레임 워 크 입 니 다. 프레임 워 크 가 가 벼 운 업데이트 시 보안 에 전념 하 는 bug 에 의존 합 니 다.
flask 의 post 요청
간단 한 로그 인 홈 페이지 테스트 post 요청 을 백 엔 드 로 전달 하 였 습 니 다.코드 구현:
"""
Date: 2019--28 10:44
User: yz
Email: [email protected]
Desc:
"""
from flask import Flask, request, render_template, redirect, abort
app = Flask(__name__)
@app.route('/')
def index():
return ' '
@app.route('/login/', methods=['GET', 'POST'])
def login():
if request.method == 'POST':
username = request.form.get('username')
password = request.form.get('password')
if username == 'root' and password == 'redhat':
return redirect('/')
else:
return render_template('login_post.html', errMessages=' !')
else:
return render_template('login_post.html')
@app.errorhandler(404)
def page_not_fount(e):
return render_template('404.html'), 404
@app.errorhandler(500)
def internal_server_error(e):
return render_template('500.html'), 500
if __name__ == '__main__':
app.run()
로그 인 후 홈 페이지 를 이동 합 니 다 “”"
Jinja2
1. Jinja 2 템 플 릿 엔진 은 무엇 입 니까?http://docs.jinkan.org/docs/jinja2/)
Jinja 2 는 현대적 이 고 디자이너 가 친절 하 며 Django 템 플 릿 을 모방 한 Python 템 플 릿 언어 입 니 다. 속도 가 빠 르 고 광범 위 하 게 사용 되 며 선택 가능 한 샌 드 박스 템 플 릿 실행 환경 을 제공 하여 안전 을 보장 합 니 다. 1) python 의 웹 개발 에서 비 즈 니스 논리 (실질 적 으로 보기 편지 수의 내용) 와 페이지 논리 (html 부품) 를 제공 합 니 다.분리 되 어 코드 의 가 독성 을 향상 시 키 고 코드 를 쉽게 이해 하고 유지 할 수 있 습 니 다. 2) 템 플 릿 렌 더 링: html 파일 에서 동적 할당 을 통 해 번역 한 html 파일 (템 플 릿 엔진 발효) 을 사용자 에 게 되 돌려 주 는 과정 입 니 다. 3). 다른 템 플 릿 엔진: Mako, Template, Jinja 2
2. 문법
1). Jinja2 : {{ }}
: http://jinja.pocoo.org/docs/templates/#builtin-filters
2). Jinja2 :
safe
capitalize ,
lower
upper
title
trim
striptags HTML
3). ?
4). for :
{% for i in li%}
xxx
{% endfor %}
5). if
{% if user == 'westos'%}
xxxx
{% elif user == 'hello' %}
xxx
{% else %}
xxx
{% endif%}
3. 매크로 의 조작 = = = = 함수 에 해당 함
1). ?
{% macro render(id) %}
hello world {{ id }}
{% endmacro %}
2). ?
{{ render(1) }}
{{ render(2) }}
{{ render(3) }}
4. include 포함 동작
: {% include "06_inclued.html"%}
5. 템 플 릿 계승: 일반 사이트 의 네 비게 이 션 표시 줄 과 아래쪽 은 변 하지 않 습 니 다. 네 비게 이 션 표시 줄 정 보 를 중복 작성 하지 않도록 합 니 다.
1). ?
{% block title %} {% endblock %}
{% block body %}
hello
{% endblock %}
2). ?
{% extends '06_base.html'%}
{% block title %}
{% endblock %}
{% block body %}
block
{% endblock %}
케이스
로그 인 로그아웃 기능 을 등록 할 수 있 는 페이지 를 만 듭 니 다. 요청 이 성공 하면 메시지 가 반 짝 입 니 다.
코드 구현:
"""
Date: 2019--28 13:35
User: yz
Email: [email protected]
Desc:
"""
from flask import Flask, request, render_template, redirect, session, flash, make_response
app = Flask(__name__)
app.config['SECRET_KEY']='westos'
users = [
{
'username': 'root',
'password': 'redhat'
}
]
@app.route('/')
def hello_world():
return render_template('index.html')
@app.route('/login/', methods=['GET', 'POST'])
def login():
if request.method == 'GET':
return render_template('login.html')
else:
username = request.form.get('username').strip()
password = request.form.get('password').strip()
for user in users:
if user['username'] == username and user['password'] == password:
session['username'] = username
flash(' ')
resp = make_response(render_template('index.html', name=username))
resp.set_cookie('username', username)
return redirect('/')
else:
flash(' ')
return render_template('login.html', errMessages='login fail')
@app.route('/logout/')
def logout():
session.pop('username')
flash(" ")
return redirect('/login/')
@app.route('/register/',methods=['GET','POST'])
def register():
if request.method == 'GET':
return render_template('register.html')
else:
username=request.form.get('username')
password=request.form.get('password')
for user in users:
if user['username']==username:
flash(' : ')
return redirect('/register/')
else:
users.append(dict(username=username,password=password))
flash(' , ')
return redirect('/login/')
@app.route('/list//')
def list():
return render_template('list.html',users=users)
if __name__ == '__main__':
app.run()
로그 인 하지 않 았 을 때 홈 페이지 를 직접 방문 하면 로그 인 버튼 이 표 시 됩 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.