前言
知了课堂-flask课程(学习flask):
flask实战(问答平台)-CSDN博客
Flask是轻量级的python web开发框架。有利于我们了解web开发,熟练使用数据库。
一:编写前端代码
录入信息页面
user_build.html
{% extends 'base.html' %}
{% block title %}用户资料创建{% endblock %}
{% block head %}
<link rel="stylesheet" href="{{ url_for('static',filename='css/detail.css') }}">
{% endblock %}
{% block body %}
<div class="row" style="margin-top: 20px;">
<div class="col"></div>
<div class="col-10">
<h1 style="text-align: center;">修改资料</h1>
<form action="#" method="post">
<h2>个人简介</h2>
<div class="form-group">
<textarea name="content" class="form-control" rows="10" placeholder="请输入内容"></textarea>
</div>
<div class="form-group" style="text-align: right;">
<button class="btn btn-primary">提交</button>
</div>
</form>
</div>
<div class="col"></div>
</div>
{% endblock %}
{% extends 'base.html' %}
{% block title %}知了传课-修改名称{% endblock %}
{% block head %}-{% endblock %}
{% block body %}
<div class="row" style="margin-top: 20px;">
<div class="col"></div>
<div class="col-10">
<h1 style="text-align: center;">修改用户名称</h1>
<form action="#" method="post">
<div class="form-group">
<input type="text" name="username" class="form-control" placeholder="请输入昵称">
</div>
<div class="form-group" style="text-align: right;">
<button class="btn btn-primary">提交</button>
</div>
</form>
</div>
<div class="col"></div>
</div>
{% endblock %}
查看页面
user_check.html
{% extends 'base.html' %}
{% block title %}用户资料{% endblock %}
{% block head %}
<link rel="stylesheet" href="{{ url_for('static',filename='css/detail.css') }}">
{% endblock %}
{% block body %}
<div class="row" style="margin-top: 20px;">
<div class="col"></div>
<div class="col-10" style="background-color: #fff;padding: 20px;">
<h3 class="page-title">-</h3>
用户id:
<br>
<br>
创建时间:
<br>
<br>
头像:<img class="avatar" src="{{ url_for('static',filename='images/avatar.jpg') }}" alt="" height="100">
<br>
<br>
个人简介:
<br>
<br>
发布的问题:
<br>
<br>
发布的答案:
<br>
<hr>
</div>
<div class="col"></div>
</div>
{% endblock %}
二:创建一个蓝图
在app.py中
from blueprints.user import bp as user_bp
app.register_blueprint(user_bp)
在bluesprints文件夹中创建users.py
from flask import Blueprint, render_template
bp = Blueprint('user', __name__, url_prefix='/user')
@bp.route('/register')
def user_register():
return render_template('user_build.html')
@bp.route('/look')
def user_look():
return render_template('user_check.html')
三:录入信息页面完善
创建表格
在models.py中
class DetailModel(db.Model):
__tablename__ = 'detail'
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
content = db.Column(db.Text, nullable=False)
create_time = db.Column(db.DateTime, default=datetime.now)
author_id = db.Column(db.Integer, db.ForeignKey('user.id'))
不要忘记更新数据库(终端)
python -m flask db migrate
python -m flask db upgrade
把表格的数据提交到数据库
首先,要限制表单格式
在forms.py中
class DetailForm(wtforms.Form):
content = wtforms.StringField(validators=[length(min=3, max=100,message='标题格式错误')])
class UpdateForm(wtforms.Form):
username = wtforms.StringField(validators=[length(min=3, max=20, message='用户名格式错误!')])
在users.py 中引用并修改
from flask import Blueprint, render_template,request,redirect,url_for,g
from decorators import login_required
from exts import db
from .forms import DetailForm
from models import DetailModel
@bp.route('/register', methods=['GET', 'POST'])
@login_required
def user_register():
if request.method == 'GET':
return render_template('user_build.html')
else:
form = DetailForm(request.form)
if form.validate():
content = form.content.data
detail = DetailModel(content=content,author_id=g.user.id)
db.session.add(detail)
db.session.commit()
return redirect('/')
else:
print(form.errors)
return redirect(url_for('user.user_register'))
def update():
form = UpdateForm(request.form)
if form.validate():
UserModel.query.filter(UserModel.id == g.user.id).update({'username':form.username.data})
db.session.commit()
return redirect('/')
else:
print(form.errors)
return render_template('update_username.html')
页面为
提交后为