知了课堂-设置个人信息(1)

本文介绍了使用Flask框架创建一个简单的web应用,包括用户资料创建、修改名称和查看用户详情的功能,涉及前后端交互、数据库操作和表单验证等技术。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 前言

知了课堂-flask课程(学习flask):

01-【前奏】课程介绍_哔哩哔哩_bilibili

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')

页面为

 提交后为

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值