flask网站部署服务器

** 登陆简单页面**

from flask import Flask,render_template,request,flash
from flask_wtf import FlaskForm
from wtforms import StringField,PasswordField,SubmitField
from wtforms.validators import DataRequired,EqualTo

app = Flask(__name__)

app.secret_key = 'huanyu'

class Loginform(FlaskForm):
    username = StringField('用户名:',validators = [DataRequired()])
    password = PasswordField('密码:',validators = [DataRequired()])
    password2 = PasswordField('密码:',validators = [DataRequired(),EqualTo('password'),'密码不一致'])
    submit = SubmitField('提交')

@app.route('/form/',methods = ['GET','POST'])
def login():
    login_form = Loginform()

    #1.判断参数请求
    if request == 'POST':

        #2.获取请求的参数
        username = request.form.get('username')
        password = request.form.get('password')
        password2 = request.form.get('password2')

        #3.验证参数的正确性
        if login_form.validate_on_submit():
            print(username,password)
            return 'success'
        else:
            flash('参数有误')

    return render_template('denglu.html',form = login_form)





@app.route('/',methods = ['GET','POST'])
def index():
    if request.method == 'POST':
        username = request.form.get('username')
        password = request.form.get('password')
        password2 = request.form.get('password2')
        print(password)

        if not all([username,password,password2]):
            flash(u'参数不完整')
        elif password != password2:
            flash(u'密码不一致')
        else:
            return 'success'

    return render_template('denglu.html')

if __name__ == '__main__':
    app.run()
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>biaodan</title>
</head>
<body>
<form method="post">
    <label>账号:</label><input type="text" name="userword"><br>
    <label>密码:</label><input type="password" name="password"><br>
    <label>密码:</label><input type="password" name="password2"><br>
    <input type="button" value="提交">
</form>
<hr>

    <form method="post">
        {{ form.csrf_token() }}
        {{ form.username.label }} {{ form.username }} <br>
        {{ form.password.label }} {{ form.password }} <br>
        {{ form.password2.label }} {{ form.password2 }} <br>
        {{ form.submit }} <br>
    </form>

</body>
</html>

使用服务器连接数据库可使用ip访问
其中有几处需要注意已经标注出

from flask import Flask, render_template,flash,request
from flask_sqlalchemy import SQLAlchemy
from flask_wtf import FlaskForm
from wtforms import StringField,SubmitField,IntegerField
from wtforms.validators import DataRequired
from flask import redirect,session, url_for
from flask import jsonify
import json

ALLOWED_EXTENSIONS = set(['png', 'jpg', 'JPG', 'PNG', 'bmp'])

app=Flask(__name__)

def start():  # 重中之重 连接服务器的关键 使得可以被访问
    return json.dumps({
     'code':'0'
     })

app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:3612@localhost/student?charset=utf8'
app.config['SQLALCHEMY_TRACK_MODIFCATIONS'] = False
app.secret_key = 'huanyu'

db = SQLAlchemy(app)


class Stu(db.Model):
    __tablename__ = 'information'
    id = db.Column(db.BigInteger, primary_key=True, autoincrement=True)
    name = db.Column(db.String(100),  nullable=True)
    xuehao = db.Column(db.BigInteger,  nullable=True)
    number = db.Column(db.BigInteger, nullable=True)

#自定义表单类
class Login(FlaskForm):
     name = StringField('姓名:', validators=[DataRequired()])   #验证函数
     xuehao = IntegerField('学号:', validators=[DataRequired()])
     number = IntegerField('电话:', validators=[DataRequired()])
     submit = SubmitField('提交')

@app.route('/login/', methods=['GET','POST'])
def login():
        return render_template('inde.html')


@app.route('/form',methods = ['GET','POST'])
def index():
    stu = Login()
    #调用WTF函数实现验证
    if stu.validate_on_submit():
        #验证通过获取数据
        stu_name = stu.name.data
        stu_xuehao = stu.xuehao.data
        stu_number = stu.number.data
        #添加数据
        try:
            new_stu = Stu(name=stu_name, xuehao=stu_xuehao, number=stu_number)
            db.session.add(new_stu)
            db.session.commit()
            login_url = url_for('login')   #页面翻转
            return redirect(login_url)     #重定向 提交后跳转页面
        except Exception as e:
            print(e)    #打印错误类型
            flash('添加失败')
            db.session.rollback()
    else:
        #验证不通过提示错误
        if request.method == 'POST':
            flash('参数不全')

    return render_template('index.html', stu=stu)


if __name__ == '__main__':
    #db.drop_all()  删除表
    db.create_all()  #新建表
    app.run(host='0.0.0.0',debug=True)

HTML表单

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>计算机3班</title>
    <style type="text/css">
	*{
		background-color:write;
	}
	#tou p{
    font-size: 40px;
    text-align: center;
      }
	#qq {
	text-align: center;
	}
        .it{
         text-align: center;
         text-size=30px;
         }
    </style>
</head>
<body>

<div id="tou">
    <p>学生信息填写</p>
</div>

  <HR style="FILTER: alpha(opacity=100,finishopacity=0,style=3)" width="100%" color=#201E1E SIZE=6>
<br>
<div align="center" id="qq">
    <form method="post" class="it">
        {{ stu.csrf_token }}
        {{ stu.name.label }}  {{ stu.name }} <br><br>
        {{ stu.xuehao.label }}  {{ stu.xuehao }} <br><br>
        {{ stu.number.label }}  {{ stu.number }} <br><br>
        <input type="submit" value="提交" >


    {% for message in get_flashed_messages() %}
            {{ message }}
        {% endfor %}

</form>

</div>

</body>
</html>
  • 从网上找了许多方法去部署服务器上,使得可以被访问,但最终都没有成功,其实很简单,使用个json 就可以完成 不用IIS或Apache等服务器去部署,但前提是你的服务器有自己的公网ip,使得可以被访问,当然端口也要开通,可以被外网访问。以上便是自己的方法,希望每个人可以少走弯路,多去思考,加油吧,少年。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值