現在音樂已經成爲人們尤爲是年輕人的平常必備。走路,坐車,逛街,咱們都能看到戴着耳機聽音樂的人。古風曲、日韓風、歐美風、hippop等等各類音樂風格多樣。隨着媒體的發展,微博微信公衆號媒體採訪等等的發展,人們對音樂的理解也開始不僅是限於聽,愈來愈多的人開始瞭解歌曲背後的含義的故事。每首歌曲背後都有着不同的情感和故事,每首歌都表明着不同的經歷和成長。總有歌曲裏彷佛有着咱們的身影和故事,在某個瞬間已經是如同曲中人。css
發現歌曲背後的故事,聊聊屬於咱們的感覺和想法,分享藏着咱們記憶和故事的那些歌。在音樂的世界中,放鬆本身,瞭解本身,也學會好好愛本身和珍惜身邊的人。html
1.網站容許不登陸的遊客訪問,遊客能夠在網站首頁查看網站用戶發佈的相關帖子,能夠查看音樂榜單,可是隻能看當前頁的帖子,不能夠過頁查看,而且不容許評論和發佈帖子。jquery
2.網站用戶先註冊後登陸,註冊須要填寫很多於3字符的用戶名、設置密碼;註冊後可用用戶名和密碼登陸。密碼錯誤或者用戶名錯誤都沒法登陸。算法
3.網站用戶登陸後,導航欄會顯示用戶名,用戶如若須要下線或者切換賬號能夠註銷賬號從新登陸。數據庫
4.網站用戶登陸後,能夠查看網站用戶發佈的全部帖子,能夠進行評論、點贊和收藏,網站也會根據瀏覽記錄推薦相關的帖子。bootstrap
5.網站用戶登陸後,能夠瀏覽本身發佈過的帖子,發過的評論和查看本身的我的信息,也能夠從新修改頭像和密碼。api
6.網站訪問者能夠經過網站右側的分類瀏覽須要的類別帖子,也能夠經過搜索關鍵詞瀏覽帖子,網站也會將熱度前五的帖子標題顯示在左側方便瀏覽。微信
導航欄(父模版):session
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>{% block title %}{% endblock %}Music世界</title> {% block link %}{% endblock %} <link rel="stylesheet" href="http://cdn.static.runoob.com/libs/bootstrap/3.3.7/css/bootstrap.min.css"> <script src="https://cdn.bootcss.com/jquery/2.1.1/jquery.min.js"></script> <script src="https://cdn.bootcss.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> <link rel="stylesheet" type="text/css" href="../static/css/base.css"> {% block head %}{% endblock %} </head> <body id="body"> <nav class="navbar navbar-default" role="navigation"> <div class="container-fluid dao"> <ul class="nav nav-pills nav2"> <li><img src="{{ url_for('static',filename='image/logo.png') }}" style="margin-left: 20px;" ></li> <li class="active"><a href="{{ url_for('index') }}">首頁</a></li> <li><a href="#">音樂分享</a></li> <li><a href="#">音樂榜單</a></li> <li><a href="#">個人音樂</a></li> <li><a href="#">音悅世界</a></li> <li><a href="{{ url_for('question') }}">發帖</a></li> {% if user_id %} <li style="float: right;margin-right: 100px"><a href="{{ url_for('logout') }}">註銷</a></li> <li style="float: right"><a href="{{ url_for('comment',user_id=user.id,num='1') }}">{{ user.username }}</a></li> {% else %} <li style="float: right;margin-right: 150px"><a href="{{ url_for('regist') }}" style="color: hotpink">註冊</a></li> <li style="float: right"><a href="{{ url_for('login') }}">登陸</a></li> {% endif %} <div > <form action="{{ url_for('search') }}" method="get" class="bs-example bs-example-form" role="form"> <div class="col-lg-6" style="width: 250px;padding-bottom: 30px"> <div class="input-group"> <input name="q" type="text" class="form-control" style="margin-top: 0" placeholder="請輸入關鍵字"> <span class="input-group-btn"> <button class="btn btn-default" type="submit">搜索</button> </span> </div><!-- /input-group --> </div><!-- /.col-lg-6 --> </form> </div> </ul> </div> </nav> <div class="box"> {% block box %}{% endblock %} </div> {% block script %}{% endblock %} </body> </html>
首頁:數據結構
{% extends 'base.html' %} {% block title %} 首頁 {% endblock %} {% block link %} <link rel="stylesheet" type="text/css" href="{{ url_for('static',filename='css/shouye.css') }}"> <script src="https://cdn.bootcss.com/jquery/2.1.1/jquery.min.js"></script> <script src="https://cdn.bootcss.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> {% endblock %} {% block box %} <div > <div class="col-md-2 column"></div> <div style="margin-left: 150px;"> <ul class="list-group"> {% for foo in questions %} <div class="info"> <li class="list-group-item" style="width: 800px"> <a href="{{ url_for('comment',user_id=foo.author.id ,num='1') }}" target="_blank"> <img src="{{ url_for('static',filename=foo.author.icon) }}" width="50px"> </a> <a href="{{ url_for('comment',user_id=foo.author.id ,num='1') }}" style="color: #337ab7" target="_blank">{{ foo.author.username }}</a> <h4><a href="{{ url_for('detail',question_id=foo.id) }}">{{ foo.title }}</a></h4> <span class="badge">{{ foo.creat_time }}</span> <p style="">{{ foo.detail[0:50] }}... </p> <div> <strong>瀏覽: <small>{{ foo.look }}</small> </strong> <strong> 分類:{{ foo.cfClass.name }}</strong> <strong style="padding-left: 10px;"> 點贊:{{ foo.click }}</strong> </div> </li> </div> {% endfor %} </ul> <div style="width: 200px;float: right;margin-right: 80px;margin-top:-900px;text-align: center"> <a href="#" class="list-group-item " style="background-color: #337ab7;color: #fff" > 帖子分類 </a> {% for c in cf %} <a href="{{ url_for('c',cf=c.id) }}" class="list-group-item">{{ c.name }}</a> {% endfor %} </div> </div> <div class="flo"> <a href="#" class="list-group-item" style="width: 200px;background-color: #337ab7;color: #fff;text-align: center;"> 熱門推薦 </a> {% for q in hot %} <a href="{{ url_for('detail',question_id=q.id) }}" class="list-group-item" style="width: 200px;"> <span style="font-size: 16px;color: red;padding-right: 10px;width:105px;">{{ loop.index }}</span> {{ q.title }} </a> {% endfor %} </div> </div> </div> {% endblock %} {% block script %} <script> {% if info %} alert('{{ info }}') {% endif %} </script> {% endblock %}
註冊:
{% extends 'base.html' %} {% block title %} 註冊 {% endblock %} {% block link %} <link rel="stylesheet" type="text/css" href="../static/css/style.css"> <link href='http://fonts.googleapis.com/css?family=Oleo+Script' rel='stylesheet' type='text/css'> {% endblock %} {% block box %} <div class="lg-container"> <h1 style="color:deeppink;">註冊</h1> <form action="{{ url_for('regist') }}" method="post" id="lg-form" name="lg-form" > <div> <label for="username">Username:</label> <input class="shuru" type="text" name="username" autocomplete="off" placeholder="請輸入用戶名"> </div> <div> <label for="password">Password:</label> <input class="shuru" type="password" id="Password1" name="password" autocomplete="off" placeholder="設置密碼" > </div> <div> <label for="password">Password1:</label> <input class="shuru" type="password" id="Password2" name="password" autocomplete="off" placeholder="確認密碼" > </div> <div id="error_box"></div> <button type="submit" id="regist" onclick="return aaa()">註冊</button> </form> </div> {% endblock %} {% block script %} <script> function aaa() { var p1 = document.getElementById('Password1') var p2 = document.getElementById('Password2') if (p1.value != p2.value){ alert('兩次密碼不同!') return false; } return true; } </script> {% endblock %}
登陸:
{% extends 'base.html' %} {% block title %} 登陸 {% endblock %} {% block link %} <link rel="stylesheet" type="text/css" href="../static/css/style.css"> <link href='http://fonts.googleapis.com/css?family=Oleo+Script' rel='stylesheet' type='text/css'> {% endblock %} {% block box %} <div class="lg-container" > <h1 style="color:deeppink;">登陸</h1> <form action="{{ url_for('login') }}" method="post" id="lg-form" name="lg-form" > <div> <label for="username">Username:</label> <input class="shuru" id="inputEmail3" type="text" name="username" placeholder="請輸入用戶名"><br> </div> <div> <label for="password">Password:</label> <input class="shuru" id="inputPassword3" type="password" name="password" placeholder="請輸入密碼" > </div> <input type="checkbox" name="vehicle" value="true" ><span>記住密碼</span> <a class="right" href="">登陸遇到問題?</a> <div id="error_box"></div> <button type="submit" value="login" id="login" onclick="return fnLogin()">登陸</button> </form> <div id="message"></div> </div> {% endblock %}
發佈帖子:
{% extends 'base.html' %} {% block title %} 發佈問答 {% endblock %} <link rel="stylesheet" type="text/css" href="../static/css/release.css"> <script src="https://cdn.bootcss.com/jquery/2.1.1/jquery.min.js"></script> <script src="https://cdn.bootcss.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> {% block box %} <div class="container" style="background-image: url(/static/image/back.jpg);width: 500px" > <div class="row clearfix"> <div class="col-md-4 column"> </div> <div class="col-md-4 column"> </div> <div class="lg-container"> <h1 align="center" style="color: salmon">發佈帖子</h1> <form role="form" action="{{ url_for('question') }}" method="post"><br/> <div class="q"> <label for="inputEmail3">標題</label><br> <input type="text" name="author_id" value="{{ user.id }}" hidden> <textarea id="title" name="title" class="form-control" cols="80" rows="1"></textarea> </div> <div class="form-group"> <label for="name">內容</label><br> {# <textarea class="form-control" id="questionDetail" name="questionDetail" cols="60" rows="5" ></textarea>#} <textarea placeholder="詳情" class="form-control" rows="5" id="detail" name="detail" style="width: 500px"></textarea> </div> <div class="form-group" style="margin-left:-115px"> <div class="col-sm-offset-2 col-sm-5"> <select name="cf" id="" class="form-control"> <option value="">--選擇分類--</option> {% for c in cf %} <option value="{{ c.id }}">{{ c.name }}</option> {% endfor %} </select> </div> </div> <br> <div style="margin-top: 30px"> <button type="submit" class="btn btn-primary" onclick="{{ url_for('question') }}" >發佈</button> </div> </form> </div> <div class="col-md-4 column"> </div> </div> </div> {% endblock %}
帖子詳情:
{% extends 'base.html' %} {% block title %} 帖子詳情 {% endblock %} {% block link %} <link rel="stylesheet" href="../static/css/detail.css"> <script src="https://cdn.bootcss.com/jquery/2.1.1/jquery.min.js"></script> <script src="https://cdn.bootcss.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> {% endblock %} {% block box %} <div class="container"> <div class="row clearfix"> <div class="col-md-2 column"> </div> <div class="col-md-8 column"> <h3>{{ ques.title }}</h3> <div style="padding: 10px;"> <span style="padding-left: 5px;">做者:{{ ques.author.username }}</span> <span style="padding-left: 10px;">瀏覽:{{ ques.look }}</span> <span style="padding-left: 10px;">點贊:{{ ques.click }}</span> <form method="post" style="display: inline-block;padding-left: 10px;"> <input name="click" value="1" type="hidden"> <button>點贊</button> </form> <form method="post" style="display: inline-block;padding-left: 10px;"> <input name="collection" value="1" type="hidden"> {% if col %} <button type="button" disabled>已收藏</button> {% else %} <button>收藏</button> {% endif %} </form> <br> <small class="badge">時間:{{ ques.creat_time }}</small> </div> <div style="padding: 20px 20px;margin-bottom: 50px;border:1px solid #eee;"> <p> {{ ques.detail }} </p> </div> <hr> <form class="form-horizontal" role="form" method="post" action="{{ url_for('answer') }}" style="margin-left: 0"> <div class="form-group"> <label for="inputEmail3" class="col-sm-2 control-label" style="text-align: left;font-size: medium;color: #337ab7;">評論</label><br> <div class="col-sm-10" style="margin-left:7px"> <input type="text" name="author_id" value="{{ user.id }}" hidden> <input type="text" name="question_id" value="{{ ques.id }}" hidden> <textarea class="form-control" name="detail" rows="10" placeholder="發表評論"></textarea> </div> </div> <div class="form-group"> <div class="col-sm-offset-2 col-sm-10" style="margin-left:7px"> <button type="submit" class="btn btn-default">發佈</button> </div> </div> </form> <hr> <h4>用戶評論</h4> {% for com in comment %} <ul style="padding-left: 0;margin-bottom: 0;"> <li class="list-group-item" style="width: 900px"> <a href="#">{{ com.author.username }}</a> <span class="badge">評論時間:{{ com.creat_time }}</span> <p>{{ com.detail }}</p> </li> </ul> {% endfor %} <hr> <div > <h3>推薦帖子</h3><br> {% for foo in questions %} <li class="list-group-item" style="width: 700px"> <a class="wrap-img" href="#" target="_blank"> <img src="{{ url_for('static',filename=foo.author.icon) }}" width="50px"> </a> <span class="glyphicon glyphicon-left" aria-hidden="true"></span> <a href="{{ url_for('comment',user_id=foo.author.id ,num='1') }}" target="_blank">{{ foo.author.username }}</a> <br> <a href="{{ url_for('detail',question_id=foo.id) }}">{{ foo.title }}</a> <span class="badge">{{ foo.creat_time }}</span> <p style="">{{ foo.detail[0:50] }}... </p> </li> {% endfor %} </div> </div> <div class="col-md-2 column"> </div> </div> </div> {% endblock %}
我的發帖:
{% extends 'comment.html' %} {% block head %} <link rel="stylesheet" type="text/css" href="{{ url_for('static',filename='css/geren.css') }}"> <script src="https://cdn.bootcss.com/jquery/2.1.1/jquery.min.js"></script> <script src="https://cdn.bootcss.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> {% endblock %} {% block subComment %} <ul class="list-group" style=""> <h4>{{username }} <small> 所有帖子</h4> <hr> {% for foo in questions %} <li class="list-group-item" style="width: 800px"> <a class="wrap-img" href="#" target="_blank"> <img src="{{ url_for('static',filename=foo.author.icon) }}" width="50px"> </a> <span class="glyphicon glyphicon-left" aria-hidden="true"></span> <a href="{{ url_for('comment',user_id=foo.author.id ,num='1')}}" target="_blank">{{ foo.author.username }}</a> <br> <a href="{{ url_for('detail',question_id=foo.id) }}">{{ foo.title }}</a> <span class="badge">{{ foo.creat_time }}</span> <p style="">{{ foo.detail[0:50] }}... </p> </li> {% endfor %} </ul> </div> {% endblock %}
我的評論:
{% extends 'comment.html' %} {% block head %} <link rel="stylesheet" type="text/css" href="{{ url_for('static',filename='css/geren.css') }}"> <script src="https://cdn.bootcss.com/jquery/2.1.1/jquery.min.js"></script> <script src="https://cdn.bootcss.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> {% endblock %} {% block subComment %} <div> <h4>{{ username }} <small> 所有評論</small></h4> <hr> {% for com in comment %} <ul style="padding-left: 0;margin-bottom: 0;"> <li class="list-group-item" style="width: 900px"> <a href="#">{{ com.author.username }}</a> <span class="badge">評論時間:{{ com.creat_time }}</span> <p>{{ com.detail }}</p> </li> </ul> {% endfor %} </div> {% endblock %}
我的資料:
{% extends 'comment.html' %} {% block head %} <link rel="stylesheet" type="text/css" href="{{ url_for('static',filename='css/geren.css') }}"> <script src="https://cdn.bootcss.com/jquery/2.1.1/jquery.min.js"></script> <script src="https://cdn.bootcss.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> {% endblock %} {% block subComment %} <div > <h4>{{ username }} <small> 我的資料</small></h4> <hr> <a href="#" class="list-group-item " style="background-color: pink">用戶:{{ user.username }}</a> {# <a href="#" class="list-group-item" style="background-color: pink">編號:{{ user.id }}</a>#} <a href="#" class="list-group-item" style="background-color: pink">暱稱:{{user.user.name}} </a> <a href="#" class="list-group-item " style="background-color: pink">帖子數:{{ questions|length }}</a> <a href="#" class="list-group-item " style="background-color: pink">評論數:{{ comment|length }}</a> </div> {% endblock %}
修改信息:
% extends 'base.html' %} {% block title %} 我的信息修改 {% endblock %} {% block box %} <div class="container" style="padding-top: 10px;"> <h2 align="center" style="color: salmon">修改信息</h2> <div class="row clearfix"> <div class="col-md-2 column"> </div> <div class="col-md-8 column"> <h4 style="color: red">頭像上傳</h4> <div style="margin: 5px 0px;margin-left: 70px;"> <form class="form-horizontal" role="form" method="post" enctype="multipart/form-data" action="{{ url_for('uploadLogo',user_id=user_id) }}" style="padding-top: 20px"> <div class="form-group"> <div class="col-sm-10"> <input type="file" id="exampleInputFile" name="logo" required> <button type="submit" class="btn btn-default">上傳頭像</button> <img src="{{ url_for('static',filename=user.icon) }}" width="100px"/> </div> </div> </form> </div> <h4 style="color: red">修改密碼</h4> <form class="form-horizontal" role="form" method="post" style="width: 500px;padding-top: 20px"> {# <div class="form-group" >#} {# <label for="inputEmail3" class="col-sm-2 control-label">原密碼</label>#} {# <div class="col-sm-10">#} {# <input type="password" name="old" class="form-control" id="p1" disabled/>#} {# </div>#} {# </div>#} <div class="form-group"> <label for="inputPassword3" class="col-sm-2 control-label">新密碼</label> <div class="col-sm-10"> <input type="password" name="new1" class="form-control" id="p2" required/> </div> </div> <div class="form-group"> <label for="inputPassword3" class="col-sm-2 control-label">確認密碼</label> <div class="col-sm-10"> <input type="password" class="form-control" id="p3" required/> </div> </div> <div class="form-group"> <div class="col-sm-offset-2 col-sm-10"> <button type="submit" class="btn btn-success" onclick="return f()">確認修改</button> </div> </div> </form> </div> <div class="col-md-2 column"> </div> </div> </div> {% endblock %} {% block script %} <script> function f() { if ($('#p2').val() == $('#p3').val()) return true; alert('密碼不同'); return false; } </script> {% endblock %}
4.數據庫設計
設計5個數據表分別爲:
1.User表:用於存儲用戶註冊的用戶數據
class User(db.Model): __tablename__ = 'user' # 創建一個表user id = db.Column(db.Integer, primary_key=True, autoincrement=True) username = db.Column(db.String(20), nullable=False) _password = db.Column(db.String(200), nullable=False) say = db.Column(db.String(50)) icon = db.Column(db.String(50)) collection = db.relationship('Question', secondary=Collection, backref=db.backref('user', lazy='dynamic'), lazy='dynamic')
2.Question表:用於存儲用戶發佈帖子的數據,包括帖子的標題、內容、發貼時間、發帖用戶、類別、點贊數和瀏覽量
class Question(db.Model): __tablename__ = 'question' id = db.Column(db.Integer, primary_key=True, autoincrement=True) title = db.Column(db.String(100), nullable=False) detail = db.Column(db.Text, nullable=False) creat_time = db.Column(db.DateTime, default=datetime.now) author_id = db.Column(db.Integer, db.ForeignKey('user.id')) cf = db.Column(db.Integer, db.ForeignKey('cf.id')) look = db.Column(db.Integer) click = db.Column(db.Integer) author = db.relationship('User', backref=db.backref('question')) cfClass = db.relationship('Cf', backref=db.backref('question'))
3.Comment表:用於存儲用戶的評論數據,包括評論內容、評論時間、評論的用戶、評論的帖子
class Comment(db.Model): __tablename__ = 'comment' id = db.Column(db.Integer, primary_key=True, autoincrement=True) author_id = db.Column(db.Integer, db.ForeignKey('user.id')) question_id = db.Column(db.Integer, db.ForeignKey('question.id')) creat_time = db.Column(db.DateTime, default=datetime.now()) detail = db.Column(db.TEXT, nullable=False) question = db.relationship('Question', backref=db.backref('comment')) author = db.relationship('User', backref=db.backref('comment', order_by=creat_time.desc))
4.Cf表:識別和存儲帖子的類型
class Cf(db.Model): __tablname__ = 'cf' id = db.Column(db.Integer, primary_key=True, autoincrement=True) name = db.Column(db.String(30)) context = db.Column(db.TEXT)
5.Collection表:存儲對應用戶收藏的帖子
Collection = db.Table( 'collection', db.Column('id', db.Integer, primary_key=True, autoincrement=True) db.Column('book_id', db.Integer, db.ForeignKey('question.id'))
db.Column('collection', db.Integer, db.ForeignKey('user.id')) db.Column('createdate', db.DATETIME) )
5.系統展現的關鍵算法與數據結構
1.登陸註冊:
@app.route('/login/', methods=['GET', 'POST']) def login(): if request.method == 'GET': return render_template('login.html') else: username = request.form.get('username') password = request.form.get('password') user = User.query.filter(User.username == username).first() if user: if user.check_password(password): session['username'] = user.username session['user_id'] = user.id session.permanent = True # 從新定位到首頁 return redirect(url_for('index')) else: # 從新定位到註冊 return '用戶不存在或密碼錯誤' else: return redirect(url_for('login')) # 註冊 @app.route('/register/', methods=['GET', 'POST']) def regist(): if request.method == 'GET': return render_template('regist.html') else: username = request.form.get('username') password = request.form.get('password') user = User.query.filter(User.username == username).first() if user: return "帳號已存在" else: user = User(username=username, password=password) db.session.add(user) db.session.commit() return redirect(url_for('login'))
2.發佈帖子:
@app.route('/question', methods=['GET', 'POST']) @loginFirst def question(): if request.method == 'GET': cf = Cf.query.all() return render_template('question.html', cf=cf) else: title = request.form.get('title') detail = request.form.get('detail') # author_id = request.form.get('author_id') author_id = User.query.filter(User.username == session.get('username')).first().id cf = request.form.get('cf') question = Question(title=title, detail=detail, author_id=author_id, cf=cf) db.session.add(question) # 加入數據庫 db.session.commit() return redirect(url_for('index'))
3.詳情頁跳轉:
@app.route('/detail/<question_id>', methods=['GET', 'POST']) # @loginFirst def detail(question_id): quest = Question.query.filter(Question.id == question_id).first() u = User.query.filter(User.id == session.get('user_id')).first() if request.method == 'POST': if request.form.get('click') == '1': quest.click = quest.click + 1 if request.form.get('collection') == '1': user = u user.collection.append(quest) db.session.add(user) col = u.collection.filter_by(id=question_id).first() if col is None: col = {} comment = Comment.query.filter(Comment.question_id == question_id).order_by('-creat_time').all() quest.look = quest.look + 1 content = { 'ques': quest, 'comment': comment, 'col': col, 'questions': Question.query.filter(Question.cf == quest.cf).all(), } return render_template('detail.html',**content)
4.發表評論:
@app.route('/answer/', methods=['GET', 'POST']) def answer(): if request.method == 'POST': question_id = request.form.get('question_id') author_id = request.form.get('author_id') detail = request.form.get('detail') comment = Comment(question_id=question_id, author_id=author_id, detail=detail) db.session.add(comment) db.session.commit() return redirect(url_for('detail', question_id=question_id))
5.搜索:
@app.route('/search') def search(): qu = request.args.get('q') c = '' if request.args.get('c') == '' else request.args.get('c') y = '' if request.args.get('y') == '' else request.args.get('y') query = Question.query.filter( or_( Question.title.contains(qu), Question.detail.contains(qu), ), Question.cf.like('%' + c + '%'), Question.creat_time.like('%' + y + '%'), ).order_by('-creat_time').all() context = { 'questions': query, 'cf': Cf.query.all(), 'hot': Question.query.order_by('-click').all()[0:5] } return render_template('index.html', **context)
6.上傳頭像:
@app.route('/uploadLogo/<user_id>', methods=['GET', 'POST']) def uploadLogo(user_id): user = User.query.filter(User.id == user_id).first() f = request.files['logo'] basepath = os.path.dirname(__file__) upload_path = os.path.join(basepath, 'static/uploads', f.filename) f.save(upload_path) user.icon = 'uploads/' + f.filename db.session.commit() return redirect(url_for('setPassword', id=user_id))
6.成品展現
1.首頁
(未登陸)
(已登陸)
2.登陸
3.註冊
4.搜索
5.分類
6.發佈帖子
7.帖子詳情
8.收藏
9.評論
10.我的帖子
11.我的評論
12.我的信息
13.修改信息