web开发——Flask框架

  其实我也不是很懂这个东西,但这次做的过程中有了一个简单的了解。还是写一篇总结一下吧!
  Flask框架可以做什么?/为什么要用Flask框架?
  Flask本身是一个轻量级的web开发框架,在web开发中难免需要进行服务器和用户之间的交互。Flask框架可以使我们只专注于功能逻辑的实现,隐藏掉服务器和用户的交互过程(flask帮你去完成)。之所以称Flask是一个轻量级的原因是Flask中只有两个模块:werkzeug(路由模块)、jinja2(模板模块)。虽然轻量但却功能强大,可以理解为Flask只是一个内核,可以增加各种扩展包来增加功能。

  Flask最基本的框架代码是这样的(在python的情况下,其余的我也不会~):

# 1.导入flask相关扩展
from flask import Flask等

# 2.创建flask应用实例,传入_name_,以确定资源路径
app = Flask(__name__)

# 3.定义路由及视图函数
@app.route(/)  // 默认有GET
# @app.route(/’, method=[GET,POST])增加请求,如果有按键的话要加上
def index():
	return “目标页面(.html)”
	# 如果要传参数,要用return render_template("目标页面(.html)", 传递参数变量)
	
#4.启动程序
If __name__ == ‘__main__’:
	app.run()

  下面介绍一些我经常用的一些flask语法:

  1.路由路径问题(也就是@app.route(‘路径’))

    明白这个问题,瞬间就知道flask是如何工作的了!如果在主机上运行的话,默认路由就是127.0.0.1(也就是默认路由:/)后面可以自己设置路径。当我们在html中利用链接进行跳转时,如果跳转的路径和flask中指定的路径相同就会进入对应视图函数。举个例子:在html中设置一个按键作为链接,链接的目标路径是/hello。当按键按下的时候,主函数中@app.route(‘/hello’)就会收到消息,接下来就该执行属于该路径下的视图函数了~

  2.跳转界面问题

    前面说了路由问题,那如何在对应路由下导入指定的html文件呢?这就是retuen的作用。在视图函数的最后,加上return某个HTML文件,那么这些逻辑操作就会基于这个HTML文件来完成

  3.按键问题

    界面设计中按键经常用到。Flask中对于按键动作的读取是通过方法(method)POST检测的,进入页面的时候已经默认了方法(method)GET。因为不是默认,所以必须要指定,使用模板如下:

@app.route('/', methods = ['GET','POST'])
def index():
	if (request.method == 'POST'):
		do_something
		# return "xxx" 如果涉及两个HTML的话这里可以加一个
	return "xxx"
  4.变量传递

    这个变量传递指的是主函数和HTML文件之间的值传递,传递的方式是通过return来实现(底层是通过jinja2)。在需要有参数传递(可多个参数)的时候就不能简单的return网页文件了。需要用下面这个:

return render_template("目标页面(.html)", 传递参数变量1,传递变量参数2)

    有一个习惯就是两个变量的命名一致,就像下面这样传递参数hello。这里面的参数可以是任意结构(字符/类/整形等)

return render_template("目标页面(.html)", hello=hello)

  在HTML中使用通过双中括号加变量名的形式:

    {{ hello }}
   5.HTML中控制代码块(for/if)方法:
{% for xx in xx%}
	Do_something
{% endfor %} // endfor要连在一起

{% if xx in xx%}
	Do_something
{% endif %}

  6.一些简单的用户交互模块(FlaskFrom表单):

    指的是输入、按键。因为一些界面的需求,这里的输入还分成字符输入和密码输入(不是明文显示,用小黑点儿代替)。直接上用法:

# 所有的都需要进行导入,介绍两个比较常用的:
# StringField是普通字符输入 PasswordField是密码输入 SubmitField是按钮
from flask import Flask, url_for, redirect, render_template, request, flash
from flask_wtf import FlaskForm
from wtforms import StringField, PasswordField, SelectField, SubmitField
from wtforms.validators import DataRequired, EqualTo
'''
 对于每次使用使用可以声明一个类,然后整个传递过去:
 u后面的就是要显示的文字,因为有的编码要求,validators=[DataRequired()]是判断是否符合输入的要求。
 render_kw就是为了placeholder的使用。
 根据需求特点选择对应种类就行了
'''
class LoginForm(FlaskForm):
    ID_Card = StringField(u'身份证号:', validators=[DataRequired()], render_kw={"placeholder": "身份证号"})
    name = StringField(u'姓名:', validators=[DataRequired()], render_kw={"placeholder": "姓名"})
    check = SubmitField(u'查询')
@app.route('/', methods = ['GET','POST'])
def index():
    login_form = LoginForm()
    if (request.method == 'POST'):
        if login_form.validate_on_submit(): #这句就是判断是否提交有效地
        if login_form.check.data: #这是第二种判断按钮被点击的方式,有时候用这个更好一点

    另外小白可能疑惑啥是placehold,就像这个样子,内容隐含在方框里,输入的时候就会消失,只体现一个提示作用,如下图的身份证号和姓名:
在这里插入图片描述
    有个事情明确一下,在html中都知道输入input,也有各种type。其实就是flask做一个封装,等真正在界面上显示的时候,变量会被重新解析成input的。同时如果有了StringField,必须要输入,否则就无法继续进行按钮操作(我也不知道为啥~)

  flask还有一个flash的部分,可以用于提示,一刷新就没有了,在主函数中flash(‘内容’)即可。但在HTML中需要一段专用代码做显示:

        <!--对于flash的使用要用如下一个循环,它有缓冲区-->
        {% for message in get_flashed_messages() %}
            {#对于显示文字的样式可以用style来改变,style有color参数用于改变颜色#}
            <div class=flash style="color: rgb(255,0,0)")>{{ message }}</div>
        {% endfor %}

  当然Flask的内容远不止如此,但我就不会了~

  留一些资料,供Flask的学习:

  视频学习资料:https://b23.tv/rd8SN3
  window10安装flask:https://blog.csdn.net/fuyouzhiyi/article/details/105545210

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Flask web开发实战中,前端部分可以使用一些插件和工具来增强网站的功能和效果。其中一些值得研究的包包括: 1. Flask-Bootstrap:这个包提供了Bootstrap框架的集成,可以方便地使用Bootstrap的样式和组件来构建网站界面。\[1\] 2. Flask-Babel:这个包提供了国际化和本地化支持,可以帮助开发者轻松地实现多语言网站。\[3\] 3. Flask-RESTful:这个包是用于开发REST API的工具,可以帮助开发者构建符合RESTful架构的API接口。\[3\] 4. Flask-Assets:这个包用于合并、压缩和编译CSS和JavaScript静态资源文件,可以提高网站的加载速度和性能。\[3\] 除了这些包之外,还有一些其他的包可以用于处理后台作业、实现认证功能、实现全文搜索等等。具体使用哪些包取决于项目的需求和开发者的偏好。\[3\] #### 引用[.reference_title] - *1* *3* [Flask Web开发:基于Python的Web应用开发实战](https://blog.csdn.net/xiaochendefendoushi/article/details/81040871)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [web前端开发——期末大作业网页制作——web网页设计期末课程大作业 HTML+CSS+JS网页设计期末课程大作业 web...](https://blog.csdn.net/qq_38514421/article/details/127563514)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值