flask 프레임 워 크 응용 (1)

7314 단어 python
구조 안내
Nginx (engine x)        HTTP     web   ,      IMAP/POP3/SMTP  。
uWSGI   Web   ,    WSGI  、uwsgi、http   。
Framework   ,          ,          ,        、       。

flask框架应用(一)_第1张图片
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()

로그 인 후 홈 페이지 를 이동 합 니 다flask框架应用(一)_第2张图片 “”"
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()

로그 인 하지 않 았 을 때 홈 페이지 를 직접 방문 하면 로그 인 버튼 이 표 시 됩 니 다.

좋은 웹페이지 즐겨찾기