flask

加载static、加载templates、页面跳转、删除coookie等


加载static、加载templates

__init__py:

	def create_app():
	
		BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
		templates_dir = os.path.join(BASE_DIR,'templates')
		app = Flask(__name__,static_folder=static_dir,templates_folder=templates_dir)
		app.register_blueprint(blueprint=blue,url_prefix='/hello')
		return app
注解:
	BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
	templates_dir = os.path.join(BASE_DIR,'templates')

	1. __file__代表当前文件
	2. os.path.abspath(__file__),表示当前文件所在目录:C:\\workspace\\day1.1\\App\\__init__.py'
	3.os.path.dirname(os.path.abspath(__file__))),表示当前目录的上一级目录:'C:\\workspace\\day1.1\\App'
	4.os.path.dirname(os.path.dirname(os.path.abspath(__file__))),表示再上一级目录:'C:\\workspace\\day1.1'
	5.os.path.join(BASE_DIR,'templates'),表示BASE_DIR路径下的templates目录'C:\\workspace\\day1.1\\templates


	# 初始化路由,__name__代表主模块名或者包  这里name代表'App'
	app = Flask(__name__,static_folder=static_dir,templates_folder=templates_dir)

	# 注册路由
	app.register_blueprint(blueprint=blue,url_prefix='/hello')

	# 注解 url_prefix='/hello' ,作用所有的url访问时前面都要加/hello/index    /hello/xxx

  • reuqest请求
views.py文件中:

# 写request请求
@blue.route('/getrequest/',methods=['get','POST'])
def get_request():

	if request.method =='GET':

		args = request.args
	else:
		form = request.form

	return '获取request参数'
注解:
	flask中的request请求与django中的不同:
	request.method = request.method
	request.GET = request.args
	request.POST = request.form
	
	上面的if else条件也可以不写
  • 响应,响应都是访问url时,返回一个网页
@blue.route('/makerequest/')
def make_response():
	# 方式一:响应可以返回页面
	# 现在修改路径后可以直接写页面了
	temp = render_template('hello.html')
	response = make_response(temp)
	# 方式二:
	response = make_response('<h2>么么哒</h2>')

	return response, 300(状态码,也可以make_response(temp,300),这里就不用写了, 可以通过F12 network -all 查看状态码)
  • 页面跳转
@blue.route('/redirect/')
def make_redirect():
	# 跳转到页面
	return redirect('hello.html')
	# 跳转的第一种方法,写url
	return redirect('/hello/index')
	# 跳转的第二种方法 蓝图的名称下的视图函数
	return redirect(url_for('first.index'))
  • 处理错误
@blue.route('/makeabort/')
def make_abort():
	abort(404)
	return '终结'
# 处理错误和上面是搭配的 exception是页面中出现的异常错误
@blue.error(exception):
def get_error(exception):

	# f12 network->all 点击make_abort会弹出下面返回的页面
	return '捕捉异常:%s' % exception
  • debug调试打了断点之后程序就执行到断点处不执行了,要点击重新运行后面的继续执行下面的程序,程序才能完全执行
  • 下午新建项目day2.1
import os
from flask import Flask
from flask_session import Session
from App.views import blue
import redis

def create_app():

	BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
	static_dir = os.path.join(BASE_DIR,'static')
	templates_dir = os.path.join(BASE_DIR, 'templates')

	app = Flask(__name__, template_folder=templates_dir,static_folder=static_dir)
	app.register_blueprint(blueprint=blue, url_prefix='/app')
	# 秘钥
	app.config['SECRET_KEY'] = 'secret_key'
	# 设置访问的数据库,使用session时使用
	app.config['SESSION_TYPE'] = 'redis'
	# 指定访问的redis数据库
	# app.config['SESSION_REDIS'] = redis.Redis(host='',port='',password='')
	# 定义存储在数据库中的前缀,在redis客户端中,通过key *命令可以查看
	app.config['SESSION_KEY_PREFIX'] = 'flask'
	# 初始化
	Session(app)
	# se = Session()
	# se.init_app(app)
	return app
manage.py:
from flask_sript import Manager
from App import create_app

app = create_app
manager = Manager(app)

if __name__ == '__main__':
	manager.run()

views.py:

import random
from flask import Blueprint,render_template,request,session,
url_for, redirect,make_response

blue = Blueprint('app', __name__)
  • session的使用可以往里面存请求的参数
@blue.route('/login/', methods=['POST', 'GET'])
def login():

	if request.method == 'GET':
		username = session.get('username')
		return render_template('login.html',username=username)
	else:
		username = request.form.get('username')
		session['username'] = username

		return redirect(url_for('app.login'))
  • 设置cookie
@blue.route('/getresponse/')
def get_response():

	response = make_response('<h2>后面可以加状态码</h2>',200)
	ticket = ''
	s = 'asjdfkdjfkjdkf'
	for i in range(20):
		ticket += random.choice(s)
	response.set_cookie('ticket', ticket)

	return response
  • 删除cookie
@blue.route('/deletecookie/')
def del_cookie():
	response = make_response('<h2>删除cookie</h2>')
	response.set_cookie('ticket',ticket)
	return response,200
  • 提交表单的格式:
<form action='' method='POST'>
	姓名:<input type='text' name='username' placeholder='请输入用户名'>
	<input type='submit' value='提交'>
</form>
  • 挖坑继承坑,继承坑的页面中全都是 填坑的样式
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值