Flask学习入门

首先安装pycharm,多做介绍了,网上一堆教程.
破解
1.修改hosts文件
将0.0.0.0 account.jetbrains.com添加到hosts文件最后,注意hosts文件无后缀,如果遇到无法修改或权限问题,可以采用覆盖的方法去替换hosts文件

修改后请检查hosts文件是否修改,激活码无法激活的原因99.99%是因为hosts没有修改正确

Windows系统hosts文件路径为:c:\windows\system32\drivers\etc
Mac和Ubantu(Linux)系统hosts文件路径为:/etc

image.png

复制激活码
打开PyCharm选择Activation code激活,然后复制下面的激活码点击激活。

K71U8DBPNE-eyJsaWNlbnNlSWQiOiJLNzFVOERCUE5FIiwibGljZW5zZWVOYW1lIjoibGFuIHl1IiwiYXNzaWduZWVOYW1lIjoiIiwiYXNzaWduZWVFbWFpbCI6IiIsImxpY2Vuc2VSZXN0cmljdGlvbiI6IkZvciBlZHVjYXRpb25hbCB1c2Ugb25seSIsImNoZWNrQ29uY3VycmVudFVzZSI6ZmFsc2UsInByb2R1Y3RzIjpbeyJjb2RlIjoiSUkiLCJwYWlkVXBUbyI6IjIwMTktMDUtMDQifSx7ImNvZGUiOiJSUzAiLCJwYWlkVXBUbyI6IjIwMTktMDUtMDQifSx7ImNvZGUiOiJXUyIsInBhaWRVcFRvIjoiMjAxOS0wNS0wNCJ9LHsiY29kZSI6IlJEIiwicGFpZFVwVG8iOiIyMDE5LTA1LTA0In0seyJjb2RlIjoiUkMiLCJwYWlkVXBUbyI6IjIwMTktMDUtMDQifSx7ImNvZGUiOiJEQyIsInBhaWRVcFRvIjoiMjAxOS0wNS0wNCJ9LHsiY29kZSI6IkRCIiwicGFpZFVwVG8iOiIyMDE5LTA1LTA0In0seyJjb2RlIjoiUk0iLCJwYWlkVXBUbyI6IjIwMTktMDUtMDQifSx7ImNvZGUiOiJETSIsInBhaWRVcFRvIjoiMjAxOS0wNS0wNCJ9LHsiY29kZSI6IkFDIiwicGFpZFVwVG8iOiIyMDE5LTA1LTA0In0seyJjb2RlIjoiRFBOIiwicGFpZFVwVG8iOiIyMDE5LTA1LTA0In0seyJjb2RlIjoiR08iLCJwYWlkVXBUbyI6IjIwMTktMDUtMDQifSx7ImNvZGUiOiJQUyIsInBhaWRVcFRvIjoiMjAxOS0wNS0wNCJ9LHsiY29kZSI6IkNMIiwicGFpZFVwVG8iOiIyMDE5LTA1LTA0In0seyJjb2RlIjoiUEMiLCJwYWlkVXBUbyI6IjIwMTktMDUtMDQifSx7ImNvZGUiOiJSU1UiLCJwYWlkVXBUbyI6IjIwMTktMDUtMDQifV0sImhhc2giOiI4OTA4Mjg5LzAiLCJncmFjZVBlcmlvZERheXMiOjAsImF1dG9Qcm9sb25nYXRlZCI6ZmFsc2UsImlzQXV0b1Byb2xvbmdhdGVkIjpmYWxzZX0=-Owt3/+LdCpedvF0eQ8635yYt0+ZLtCfIHOKzSrx5hBtbKGYRPFDrdgQAK6lJjexl2emLBcUq729K1+ukY9Js0nx1NH09l9Rw4c7k9wUksLl6RWx7Hcdcma1AHolfSp79NynSMZzQQLFohNyjD+dXfXM5GYd2OTHya0zYjTNMmAJuuRsapJMP9F1z7UTpMpLMxS/JaCWdyX6qIs+funJdPF7bjzYAQBvtbz+6SANBgN36gG1B2xHhccTn6WE8vagwwSNuM70egpahcTktoHxI7uS1JGN9gKAr6nbp+8DbFz3a2wd+XoF3nSJb/d2f/6zJR8yJF8AOyb30kwg3zf5cWw==-MIIEPjCCAiagAwIBAgIBBTANBgkqhkiG9w0BAQsFADAYMRYwFAYDVQQDDA1KZXRQcm9maWxlIENBMB4XDTE1MTEwMjA4MjE0OFoXDTE4MTEwMTA4MjE0OFowETEPMA0GA1UEAwwGcHJvZDN5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxcQkq+zdxlR2mmRYBPzGbUNdMN6OaXiXzxIWtMEkrJMO/5oUfQJbLLuMSMK0QHFmaI37WShyxZcfRCidwXjot4zmNBKnlyHodDij/78TmVqFl8nOeD5+07B8VEaIu7c3E1N+e1doC6wht4I4+IEmtsPAdoaj5WCQVQbrI8KeT8M9VcBIWX7fD0fhexfg3ZRt0xqwMcXGNp3DdJHiO0rCdU+Itv7EmtnSVq9jBG1usMSFvMowR25mju2JcPFp1+I4ZI+FqgR8gyG8oiNDyNEoAbsR3lOpI7grUYSvkB/xVy/VoklPCK2h0f0GJxFjnye8NT1PAywoyl7RmiAVRE/EKwIDAQABo4GZMIGWMAkGA1UdEwQCMAAwHQYDVR0OBBYEFGEpG9oZGcfLMGNBkY7SgHiMGgTcMEgGA1UdIwRBMD+AFKOetkhnQhI2Qb1t4Lm0oFKLl/GzoRykGjAYMRYwFAYDVQQDDA1KZXRQcm9maWxlIENBggkA0myxg7KDeeEwEwYDVR0lBAwwCgYIKwYBBQUHAwEwCwYDVR0PBAQDAgWgMA0GCSqGSIb3DQEBCwUAA4ICAQC9WZuYgQedSuOc5TOUSrRigMw4/+wuC5EtZBfvdl4HT/8vzMW/oUlIP4YCvA0XKyBaCJ2iX+ZCDKoPfiYXiaSiH+HxAPV6J79vvouxKrWg2XV6ShFtPLP+0gPdGq3x9R3+kJbmAm8w+FOdlWqAfJrLvpzMGNeDU14YGXiZ9bVzmIQbwrBA+c/F4tlK/DV07dsNExihqFoibnqDiVNTGombaU2dDup2gwKdL81ua8EIcGNExHe82kjF4zwfadHk3bQVvbfdAwxcDy4xBjs3L4raPLU3yenSzr/OEur1+jfOxnQSmEcMXKXgrAQ9U55gwjcOFKrgOxEdek/Sk1VfOjvS+nuM4eyEruFMfaZHzoQiuw4IqgGc45ohFH0UUyjYcuFxxDSU9lMCv8qdHKm+wnPRb0l9l5vXsCBDuhAGYD6ss+Ga+aDY6f/qXZuUCEUOH3QUNbbCUlviSz6+GiRnt1kA9N2Qachl+2yBfaqUqr8h7Z2gsx5LcIf5kYNsqJ0GavXTVyWh7PYiKX4bs354ZQLUwwa/cG++2+wNWP+HtBhVxMRNTdVhSm38AknZlD+PTAsWGu9GyLmhti2EnVwGybSD2Dxmhxk3IPCkhKAK+pl0eWYGZWG3tJ9mZ7SowcXLWDFAk0lRJnKGFMTggrWjV8GYpw5bq23VmIqqDLgkNzuoog==

创建第一个flask项目

image.png

默认只支持get请求,如果需要其他的请求方式需自己添加。(methods中以列表形式添加)

@app.route('/', methods=['GET','POST'])

可下载postman来执行不同类型的请求命令。


postman.png

定义其他路由 默认路由为app.route('/')

#<>定义路由的参数,<>内需要起个名字。
@app.route('/orders/<order_id>')
def get_order_id(order_id):
    #需要在视图函数的()内填入参数名,那么后面的代码才能去使用。
    return 'order_id %s' % order_id

默认的参数名是一个string为Unicode编码。
路由访问的优化

@app.route('/orders/<int:order_id>')
def get_order_id(order_id):

    #参数类型,默认是字符串,Unicode。
    print (type(order_id))

    #有的时候需要对路由做访问优化。订单ID应该是int;类型。

    #需要在视图函数的()内填入参数名,那么后面的代码才能去使用。
    return 'order_id %s' % order_id

限定为int float等

实现一个简单登录的逻辑处理。

  • 目的:实现一个简单登录的逻辑处理。
  • 1.路由需要有get和post请求两种方式。-->需要判断请求方式。
  • 2.获取请求参数。
  • 3.判断参数是否填写&密码是否相同。
  • 4.如果判断都没有问题,就返回一个success。

在tempplates中添加一个index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

<form method="post">
    <label>用户名:</label><input type="text" name="username"><br>
    <label>密码:</label><input type="password" name="password"><br>
    <label>确认密码:</label><input type="password" name="password2"><br>
    <input type="submit" value="提交"><br>
    {% for message in get_flashed_messages() %}
        {{ message }}
    {% endfor %}
</form>

</body>
</html>

app.py中的内容为:

from flask import Flask,render_template,request

app = Flask(__name__)


'''
目的:实现一个简单登录的逻辑处理。
1.路由需要有get和post请求两种方式。-->需要判断请求方式。
2.获取请求参数。
3.判断参数是否填写&密码是否相同。
4.如果判断都没有问题,就返回一个success。
'''


@app.route('/',methods=['GET','POST'])
def index():
    #1.request:请求对象-->获取请求方式、数据
    if request.method == 'POST':

        #2.获取请求参数
        username = request.form.get('username')
        password = request.form.get('password')
        password2 = request.form.get('password2')
        print(password)
        #3.验证参数是否填写&密码是否相同。
        if not all([username,password,password2]):
            print('参数不完整')
        elif password != password2:
            print('密码不一致')
        else:
            return 'success'

    return render_template('index.html')


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

其中

if not all([arg1, arg2, arg3]): # 当 arg1, arg2, arg3都不为空时all函数返回true
        return jsonify(errno=RET.PARAMERR, errmsg=u"参数不完整!")

对上一个程序进行优化

将打印在控制台的消息转变为显示在页面上的消息。

  • 给模板传递消息
  • flash --> 需要对内容加密,因此需要设置secret_key,做加密消息的混淆。
  • 模板中需要遍历消息
    1.首先导入flash包,并将所有的print()改为flash(),添加secret_key。
    2.在index.html中使用遍历获取闪现的消息。
    以下是index.html中添加的部分(先敲for然后tab键。)
{# 使用遍历获取闪现的消息 #}
    {% for message in get_flashed_messages() %}
            {{ message }}
    {% endfor %}

app.py中添加secret_key(任意字符串)

'''
1.给模板传递消息
2.flash --> 需要对内容加密,因此需要设置secret_key,做加密消息的混淆。
3.模板中需要遍历消息
'''
app.secret_key = 'xiao'     
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • width: 65%;border: 1px solid #ddd;outline: 1300px solid #...
    邵胜奥阅读 4,917评论 0 1
  • flask文档flask最佳实践 已经解释的非常详细了,我这里只把我关注的点以我的理解记录一下。 一:程序的基本结...
    m风满楼阅读 2,431评论 0 4
  • github地址,欢迎大家提交更新。 express() express()用来创建一个Express的程序。ex...
    Programmer客栈阅读 2,637评论 0 1
  • Twitch 商城网站 介绍: 1、Node.js搭建的网站,采用Mongodb数据库2、后台框架 借用了 exp...
    Junting阅读 957评论 0 0
  • 无论是生活效率还是工作效率,重要的是要提现在执行力上,每一点效率的提高,都需要执行力的不断提高和减少相应的错误路径...
    当为人杰阅读 163评论 0 0