期末作品检查
一、个人学期总结
本学期从一开始便接触Python语言,感觉Python还是比较容易上手的。从一开始简单的几何图形制作到最后网页数据库的链接实现,这个过程其实不算长,不过也因此最后作业的完成也比较简单。如果想从事这方面的工作,这学期所学的知识最多也只能是算基础,让自己在未来想深入学习Python有能力能自己学习更高级的功能。
对于这学期学习的,还是以最后这个大作业作为讲述的内容吧!毕竟这个才算得上比较完整。
从这个作业的实现来看,本学期老师教的知识基本上都能掌握,尽管自己可能无法全部记住,但是看着以前的作业自己也能知道相应的功能应该如何去实现。一边学习一边做出相应功能程序并提交的这种授课方式对于我们来说是更好的,相当于我们在上课的同时也将笔记给做了。在最后自己去做一整份作业的时候也有功能实现参考。
二、总结Python+Flask+MysqL的web建设技术过程,标准如下:
1、即是对自己所学知识的梳理
2、也可作为初学入门者的简单教程
3、也可作为自己以后复习的向导
4、也是一种向外展示能力的途径
答:这次的学习过程中,我学会了如何写前端,并且学会了如何连接数据库,很感谢老师的耐心教导,并且学会了python的基础运用,以前学习了一些java,这次又学习了python这门编程语言,得出一个结论,就是其实这都是计算机的语言,套用的方法其实都差不多,只是表示的方式不同罢了,前端的编写也是如此。
1 app.config.from_object(config) # 关联config.py文件进来 2 db = SQLAlchemy(app) # 建立和数据库的关系映射
1 class User(db.Model): # 创建类User 2 __tablename__ = 'user' # 类对应的表名user 3 id = db.Column(db.Integer, primary_key=True, autoincrement=True) # autoincrement自增长 4 username = db.Column(db.String(20), nullable=False) # nullable是否为空 5 _password = db.Column(db.String(200), nullable=False) # 密码加密内部使用 6 nickname = db.Column(db.String(20), nullable=True)
创建user表,用以存储用户的基础数据(用户名,密码)。
1 @app.route('/denglu/', methods=['GET', 'POST']) # methods定义它有两种请求方式 2 def denglu(): 3 if request.method == 'GET': 4 return render_template('denglu.html') 5 else: 6 username = request.form.get('user') # get请求模式,安排对象接收数据 7 password = request.form.get('pass') 8 user = User.query.filter(User.username == username).first() # 作查询,并判断 9 if user: # 判断用户名 10 if user.check_password(password): # 判断密码 11 session['user'] = username # 利用session添加传回来的值username 12 session.permanent = True # 设置session过期的时间 13 return redirect(url_for('daohang')) 14 else: 15 return u'用户密码错误' 16 else: 17 return u'用户不存在,请先注册'
用get方式请求网页,获取网页中的用户名和密码,并将其与数据库的信息进行对比进行判断。
1 复制代码 2 @app.route('/zhuce/', methods=['GET', 'POST']) 3 def zhuce(): 4 if request.method == 'GET': 5 return render_template('zhuce.html') 6 else: 7 username = request.form.get('user') # post请求模式,安排对象接收数据 8 password = request.form.get('pass') 9 nickname = request.form.get('nickname') 10 user = User.query.filter(User.username == username).first() # 作查询,并判断 11 if user: 12 return u'该用户已存在' 13 else: 14 user = User(username=username, password=password, nickname=nickname) 15 db.session.add(user) 16 db.session.commit() 17 return redirect(url_for('denglu')) # redirect重定向
将获取的用户名与数据库中的user表中的用户名进行比对,不让其重复
1 def loginFirst(fabu): 2 @wraps(fabu) # 加上wraps,它可以保留原有函数的__name__,docstring 3 def wrapper(*args, **kwargs): # 定义wrapper函数将其返回,用*args, **kwargs把原函数的参数进行传递 4 if session.get('user'): 5 return fabu(*args, **kwargs) 6 else: 7 return redirect(url_for('denglu')) 8 return wrapper
定义不管实施什么内部操作,都需要先登录。
1 @app.route('/fabu/', methods=['GET', 'POST']) 2 @loginFirst # 将decorator定义的增强函数放在待增强函数定义的上面 3 def fabu(): 4 if request.method == 'GET': 5 return render_template('fabu.html') 6 else: 7 title = request.form.get('title') # post请求模式,安排对象接收数据 8 detail = request.form.get('detail') 9 author_id = User.query.filter( 10 User.username == session.get('user')).first().id 11 fabu = Fabu(title=title, detail=detail, author_id=author_id) # 将对象接收的数据赋到Fabu类中,即存到数据库 12 db.session.add(fabu) 13 db.session.commit() 14 return redirect(url_for('daohang'))
若能获取到用户信息则发布问答,若没能获取用户信息则跳转至登录界面。
1 @app.route('/fabuview/<fabu_id>') 2 def fabuview(fabu_id): 3 fa = Fabu.query.filter(Fabu.id == fabu_id).first() 4 comments = Comment.query.filter(Comment.fabu_id == fabu_id).all() 5 return render_template('fabuview.html', fa=fa, comments=comments)
1 @app.route('/comment/', methods=['POST']) 2 @loginFirst # 装饰器,跳转某页面之前先进行登录 3 def comment(): 4 detail = request.form.get('pinglun') # get请求模式,安排对象接收数据 5 author_id = User.query.filter(User.username == session.get('user')).first().id 6 fabu_id = request.form.get('fa_id') 7 comment = Comment(detail=detail, author_id=author_id, fabu_id=fabu_id) 8 db.session.add(comment) # 执行操作 9 db.session.commit() # 提交到数据库 10 return redirect(url_for('fabuview', fabu_id=fabu_id)) # 重定向到fabuview请求时要带fabu_id
跳转至发布内容页,显示出发布内容,下面则可以进行评论。评论也会提交进数据库。
1 @app.route('/yonghu/<username_id>/<tag>') 2 def yonghu(username_id, tag): 3 user = User.query.filter(User.id == username_id).first() 4 context = { 5 'userid': user.id, 6 'username': user.username, 7 'fabus': user.fabu, 8 'comments': user.comments 9 } # 根据tag的不同去到不同页面,一个请求跳转3个不同页面 10 if tag == '1': 11 return render_template('yonghu1.html', **context) 12 elif tag == '2': 13 return render_template('yonghu2.html', **context) 14 else: 15 return render_template('yonghu3.html', **context)
根据不同的tag去到不同的页面,分别是用户的各种信息界面
1 @app.route('/search/') 2 def search(): 3 sousuo = request.args.get('sousuo') # args获取关键字,区别form 4 fabus = Fabu.query.filter( 5 or_( # 两种查询条件 6 Fabu.title.contains(sousuo), # contains模糊查 7 Fabu.detail.contains(sousuo) 8 ) 9 ).order_by('-creat_time') 10 return render_template('daohang.html', fabus=fabus) # fabus要和原首页数据模型一样
搜索功能,模糊查询。
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="utf-8"> 5 <title> 6 首页 7 {% block denglutitle %}{% endblock %} 8 {% block zhucetitle %}{% endblock %} 9 {% block tupiantitle %}{% endblock %} 10 {% block fabutitle %}{% endblock %} 11 {% block fabu_viewtitle %}{% endblock %} 12 {% block yonghufathertitle %}{% endblock %} 13 </title> 14 <link rel="stylesheet" href="http://cdn.static.runoob.com/libs/bootstrap/3.3.7/css/bootstrap.min.css"> 15 <link rel="stylesheet" href="{{ url_for('static',filename='css/daohang.css') }}"> 16 <script src="http://cdn.static.runoob.com/libs/jquery/2.1.1/jquery.min.js"></script> 17 <script src="http://cdn.static.runoob.com/libs/bootstrap/3.3.7/js/bootstrap.min.js"></script> 18 <script src="{{ url_for('static',filename='js/dengpao.js') }}"></script> 19 {% block dengluhead %}{% endblock %} 20 {% block zhucehead %}{% endblock %} 21 {% block tupianhead %}{% endblock %} 22 {% block fabuhead %}{% endblock %} 23 {% block fabu_viewhead %}{% endblock %} 24 {% block yonghufatherhead %}{% endblock %} 25 </head> 26 <body id="mybody"> 27 28 <nav class="navbar navbar-default" role="navigation"> 29 <div class="container-fluid"> 30 <div class="navbar-header"> 31 <a class="navbar-brand" href="{{ url_for('daohang') }}">首页</a> 32 </div> 33 <div> 34 <ul class="nav navbar-nav navbar-right"> 35 {% if sessionusername %} 36 <li><a href="http://127.0.0.1:5000/yonghu" onclick="">{{ sessionusername }}</a></li> 37 <li><a href="{{ url_for('logout') }}" onclick=""><span class="glyphicon glyphicon-log-out"></span> 38 注销</a></li> 39 {% else %} 40 <li><a href="{{ url_for('denglu') }}" onclick=""><span class="glyphicon glyphicon-log-in"></span> 登录</a> 41 </li> 42 <li><a href="{{ url_for('zhuce') }}" onclick=""><span class="glyphicon glyphicon-user"></span> 43 注册</a></li> 44 {% endif %} 45 </ul> 46 </div> 47 48 <div> 49 <ul class="nav navbar-nav"> 50 <li><a href="{{ url_for('fabu') }}" onclick="">发布</a></li> 51 </ul> 52 </div> 53 54 <form class="form-inline" role="form" action="{{ url_for('search') }}" method="get"> 55 <div class="form-group"> 56 <label class="sr-only" for="sousuo">名称</label> 57 <input type="text" class="form-control" name="sousuo" id="sousuo" placeholder="请输入内容"> 58 <input type="submit" value="搜索" class="btn btn-default" onclick=""> 59 </div> 60 </form> 61 </div> 62 </nav> 63 64 65 66 {% block daohangbody %} 67 <div class="container"> 68 <div class="row clearfix"> 69 <div class="col-md-4 column s1"></div> 70 <div class="col-md-4 column s1"> 71 <h1 class="text-center">发布</h1> 72 <ul class="list-unstyled"> 73 {% for foo in fabus %} 74 <li class="list-group-item-success"> 75 <a href="{{ url_for('yonghu',username_id=foo.author_id,tag=1) }}"><span 76 class="glyphicon glyphicon-fire"></span>{{ foo.author.username }}</a> 77 <h4 class="text-center"><a 78 href="{{ url_for('fabuview',fabu_id=foo.id) }}">{{ foo.title }}</a></h4> 79 <span class="badge pull-right">{{ foo.creat_time }}</span> 80 <br> 81 <p>{{ foo.detail }}</p> 82 </li> 83 {% endfor %} 84 </ul> 85 </div> 86 <div class="col-md-4 column"></div> 87 </div> 88 </div> 89 {% endblock %} 90 91 <footer> 92 <div class="container-fluid"> 93 <div class="navbar-header"> 94 <a class="navbar-header" href="https://www.360kan.com/ctUbkbcLWLYz3ED.html" style="color:blue">火影忍者选集</a> 95 </div> 96 </div> 97 </footer> 98 99 </body> 100 </html>
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="utf-8"> 5 <title> 6 首页 7 {% block denglutitle %}{% endblock %} 8 {% block zhucetitle %}{% endblock %} 9 {% block tupiantitle %}{% endblock %} 10 {% block fabutitle %}{% endblock %} 11 {% block fabu_viewtitle %}{% endblock %} 12 {% block yonghufathertitle %}{% endblock %} 13 </title> 14 <link rel="stylesheet" href="http://cdn.static.runoob.com/libs/bootstrap/3.3.7/css/bootstrap.min.css"> 15 <link rel="stylesheet" href="{{ url_for('static',filename='css/daohang.css') }}"> 16 <script src="http://cdn.static.runoob.com/libs/jquery/2.1.1/jquery.min.js"></script> 17 <script src="http://cdn.static.runoob.com/libs/bootstrap/3.3.7/js/bootstrap.min.js"></script> 18 <script src="{{ url_for('static',filename='js/dengpao.js') }}"></script> 19 {% block dengluhead %}{% endblock %} 20 {% block zhucehead %}{% endblock %} 21 {% block tupianhead %}{% endblock %} 22 {% block fabuhead %}{% endblock %} 23 {% block fabu_viewhead %}{% endblock %} 24 {% block yonghufatherhead %}{% endblock %} 25 </head> 26 <body id="mybody"> 27 28 <nav class="navbar navbar-default" role="navigation"> 29 <div class="container-fluid"> 30 <div class="navbar-header"> 31 <a class="navbar-brand" href="{{ url_for('daohang') }}">首页</a> 32 </div> 33 <div> 34 <ul class="nav navbar-nav navbar-right"> 35 {% if sessionusername %} 36 <li><a href="http://127.0.0.1:5000/yonghu" onclick="">{{ sessionusername }}</a></li> 37 <li><a href="{{ url_for('logout') }}" onclick=""><span class="glyphicon glyphicon-log-out"></span> 38 注销</a></li> 39 {% else %} 40 <li><a href="{{ url_for('denglu') }}" onclick=""><span class="glyphicon glyphicon-log-in"></span> 登录</a> 41 </li> 42 <li><a href="{{ url_for('zhuce') }}" onclick=""><span class="glyphicon glyphicon-user"></span> 43 注册</a></li> 44 {% endif %} 45 </ul> 46 </div> 47 48 <div> 49 <ul class="nav navbar-nav"> 50 <li><a href="{{ url_for('fabu') }}" onclick="">发布</a></li> 51 </ul> 52 </div> 53 54 <form class="form-inline" role="form" action="{{ url_for('search') }}" method="get"> 55 <div class="form-group"> 56 <label class="sr-only" for="sousuo">名称</label> 57 <input type="text" class="form-control" name="sousuo" id="sousuo" placeholder="请输入内容"> 58 <input type="submit" value="搜索" class="btn btn-default" onclick=""> 59 </div> 60 </form> 61 </div> 62 </nav> 63 64 65 66 {% block daohangbody %} 67 <div class="container"> 68 <div class="row clearfix"> 69 <div class="col-md-4 column s1"></div> 70 <div class="col-md-4 column s1"> 71 <h1 class="text-center">发布</h1> 72 <ul class="list-unstyled"> 73 {% for foo in fabus %} 74 <li class="list-group-item-success"> 75 <a href="{{ url_for('yonghu',username_id=foo.author_id,tag=1) }}"><span 76 class="glyphicon glyphicon-fire"></span>{{ foo.author.username }}</a> 77 <h4 class="text-center"><a 78 href="{{ url_for('fabuview',fabu_id=foo.id) }}">{{ foo.title }}</a></h4> 79 <span class="badge pull-right">{{ foo.creat_time }}</span> 80 <br> 81 <p>{{ foo.detail }}</p> 82 </li> 83 {% endfor %} 84 </ul> 85 </div> 86 <div class="col-md-4 column"></div> 87 </div> 88 </div> 89 {% endblock %} 90 91 <footer> 92 <div class="container-fluid"> 93 <div class="navbar-header"> 94 <a class="navbar-header" href="https://www.360kan.com/ctUbkbcLWLYz3ED.html" style="color:blue">火影忍者选集</a> 95 </div> 96 </div> 97 </footer> 98 99 </body> 100 </html>
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="utf-8"> 5 <title> 6 首页 7 {% block denglutitle %}{% endblock %} 8 {% block zhucetitle %}{% endblock %} 9 {% block tupiantitle %}{% endblock %} 10 {% block fabutitle %}{% endblock %} 11 {% block fabu_viewtitle %}{% endblock %} 12 {% block yonghufathertitle %}{% endblock %} 13 </title> 14 <link rel="stylesheet" href="http://cdn.static.runoob.com/libs/bootstrap/3.3.7/css/bootstrap.min.css"> 15 <link rel="stylesheet" href="{{ url_for('static',filename='css/daohang.css') }}"> 16 <script src="http://cdn.static.runoob.com/libs/jquery/2.1.1/jquery.min.js"></script> 17 <script src="http://cdn.static.runoob.com/libs/bootstrap/3.3.7/js/bootstrap.min.js"></script> 18 <script src="{{ url_for('static',filename='js/dengpao.js') }}"></script> 19 {% block dengluhead %}{% endblock %} 20 {% block zhucehead %}{% endblock %} 21 {% block tupianhead %}{% endblock %} 22 {% block fabuhead %}{% endblock %} 23 {% block fabu_viewhead %}{% endblock %} 24 {% block yonghufatherhead %}{% endblock %} 25 </head> 26 <body id="mybody"> 27 28 <nav class="navbar navbar-default" role="navigation"> 29 <div class="container-fluid"> 30 <div class="navbar-header"> 31 <a class="navbar-brand" href="{{ url_for('daohang') }}">首页</a> 32 </div> 33 <div> 34 <ul class="nav navbar-nav navbar-right"> 35 {% if sessionusername %} 36 <li><a href="http://127.0.0.1:5000/yonghu" onclick="">{{ sessionusername }}</a></li> 37 <li><a href="{{ url_for('logout') }}" onclick=""><span class="glyphicon glyphicon-log-out"></span> 38 注销</a></li> 39 {% else %} 40 <li><a href="{{ url_for('denglu') }}" onclick=""><span class="glyphicon glyphicon-log-in"></span> 登录</a> 41 </li> 42 <li><a href="{{ url_for('zhuce') }}" onclick=""><span class="glyphicon glyphicon-user"></span> 43 注册</a></li> 44 {% endif %} 45 </ul> 46 </div> 47 48 <div> 49 <ul class="nav navbar-nav"> 50 <li><a href="{{ url_for('fabu') }}" onclick="">发布</a></li> 51 </ul> 52 </div> 53 54 <form class="form-inline" role="form" action="{{ url_for('search') }}" method="get"> 55 <div class="form-group"> 56 <label class="sr-only" for="sousuo">名称</label> 57 <input type="text" class="form-control" name="sousuo" id="sousuo" placeholder="请输入内容"> 58 <input type="submit" value="搜索" class="btn btn-default" onclick=""> 59 </div> 60 </form> 61 </div> 62 </nav> 63 64 65 66 {% block daohangbody %} 67 <div class="container"> 68 <div class="row clearfix"> 69 <div class="col-md-4 column s1"></div> 70 <div class="col-md-4 column s1"> 71 <h1 class="text-center">发布</h1> 72 <ul class="list-unstyled"> 73 {% for foo in fabus %} 74 <li class="list-group-item-success"> 75 <a href="{{ url_for('yonghu',username_id=foo.author_id,tag=1) }}"><span 76 class="glyphicon glyphicon-fire"></span>{{ foo.author.username }}</a> 77 <h4 class="text-center"><a 78 href="{{ url_for('fabuview',fabu_id=foo.id) }}">{{ foo.title }}</a></h4> 79 <span class="badge pull-right">{{ foo.creat_time }}</span> 80 <br> 81 <p>{{ foo.detail }}</p> 82 </li> 83 {% endfor %} 84 </ul> 85 </div> 86 <div class="col-md-4 column"></div> 87 </div> 88 </div> 89 {% endblock %} 90
91 <footer> 92 <div class="container-fluid"> 93 <div class="navbar-header"> 94 <a class="navbar-header" href="https://www.360kan.com/ctUbkbcLWLYz3ED.html" style="color:blue">火影忍者选集</a> 95 </div> 96 </div> 97 </footer> 98 99 </body> 100 </html>
1 function fnRegistration() { 2 var uSer = document.getElementById("user"); 3 var pAss = document.getElementById("pass"); 4 var aGain = document.getElementById("again"); 5 var oError = document.getElementById("error_box"); 6 var isError = true; 7 8 oError.innerHTML = "<br>"; 9 10 验证用户名 11 if (uSer.value.length < 6 || uSer.value.length > 20) { 12 oError.innerHTML = "用户名只能6-20位"; 13 isError = false; 14 return isError; 15 } else if ((uSer.value.charCodeAt(0) >= 48) && (uSer.value.charCodeAt(0) <= 57)) { 16 oError.innerHTML = "用户名首字母不能是数字"; 17 isError = false; 18 return isError; 19 } else for (var i = 0; i < uSer.value.length; i++) { 20 if ((uSer.value.charCodeAt(i) < 48) || (uSer.value.charCodeAt(i) > 57) && (uSer.value.charCodeAt(i) < 97) || (uSer.value.charCodeAt(i) > 122)) { 21 oError.innerHTML = "用户名只能由数字和字母组成"; 22 isError = false; 23 return isError; 24 } 25 }
1 // 验证密码 2 if (pAss.value.length < 6 || pAss.value.length > 20) { 3 oError.innerHTML = "密码只能6-20位"; 4 isError = false; 5 return isError; 6 } 7 8 // 验证再次输入的密码 9 if (aGain.value != pAss.value) { 10 oError.innerHTML = "密码不一致"; 11 isError = false; 12 return isError; 13 } 14 // 验证弹框 15 window.alert("注册成功!"); 16 return true; 17 }
1 {% extends 'daohang.html' %} 2 3 {% block zhucetitle %}注册{% endblock %} 4 {% block zhucehead %} 5 <link rel="stylesheet" type="text/css" href="{{ url_for('static',filename='css/denglu.css') }}"> 6 <script src="{{ url_for('static',filename='js/edit.js') }}"></script> 7 {% endblock %} 8 {% block daohangbody %} 9 <div id="container" style="margin-left: auto;margin-right: auto"> 10 <div id="header"><h2 align="center">注册</h2></div> 11 <div id="content"> 12 <form action="{{ url_for('zhuce') }}" method="post"><br> 13 <p align="center">用户名称:</p> 14 <p align="center"> 15 <input type="text" name="user" id="user" placeholder="请输入用户名"> 16 </p> 17 <p align="center">密码:</p> 18 <p align="center"> 19 <input type="password" name="pass" id="pass" placeholder="请输入密码"> 20 </p> 21 <p align="center">确认密码:</p> 22 <p align="center"> 23 <input type="password" name="again" id="again" placeholder="再次输入密码"> 24 </p> 25 <div id="error_box"><br></div> 26 <p align="center"> 27 <input type="submit" value="注册" onclick="return fnRegistration()"> 28 </p> 29 </form> 30 </div> 31 </div> 32 {% endblock %}
1 {% extends 'daohang.html' %} 2 3 {% block denglutitle %}登录{% endblock %} 4 {% block dengluhead %} 5 <link rel="stylesheet" type="text/css" href="{{ url_for('static',filename='css/denglu.css') }}"> 6 <script src="{{ url_for('static',filename='js/edit.js') }}"></script> 7 {% endblock %} 8 {% block daohangbody %} 9 <div id="container" style="margin-left: auto;margin-right: auto"> 10 <div id="header"><h2 align="center">请登录</h2></div> 11 <div id="content"> 12 <form action="{{ url_for('denglu') }}" method="post" align="center"><br> 13 用户名称:<input type="text" name="user" id="user" placeholder="请输入用户名"> 14 <br> 15 密 码:<input type="password" name="pass" id="pass" placeholder="请输入密码"> 16 <br> 17 <div id="error_box"><br></div> 18 <input type="submit" value="登录" onclick="return fnLogin()">  19 <button><a href="{{ url_for('zhuce') }}">注册</a> 20 </button> 21 </form> 22 </div> 23 </div> 24 {% endblock %}
1 {% extends 'daohang.html' %} 2 {% block fabutitle %}发布{% endblock %} 3 {% block fabuhead %} 4 <link rel="stylesheet" href="http://cdn.static.runoob.com/libs/bootstrap/3.3.7/css/bootstrap.min.css"> 5 <script src="http://cdn.static.runoob.com/libs/jquery/2.1.1/jquery.min.js"></script> 6 <script src="http://cdn.static.runoob.com/libs/bootstrap/3.3.7/js/bootstrap.min.js"></script> 7 {% endblock %} 8 {% block daohangbody %} 9 <form role="form" action="{{ url_for('fabu') }}" method="post"> 10 <div class="col-md-4 column"></div> 11 <div class="form-group col-md-4 column"> 12 <label for="title">标题</label> 13 <textarea class="form-control" rows="1" id="title" name="title"></textarea> 14 <label for="detail">详情</label> 15 <textarea class="form-control" rows="10" id="detail" name="detail"></textarea> 16 <div id=""><br></div> 17 <input type="submit" value="发布" class="btn btn-default" onclick=""> 18 </div> 19 <div class="col-md-4 column"></div> 20 </form> 21 {% endblock %}
1 {% extends 'daohang.html' %} 2 {% block fabu_viewtitle %}发布内容{% endblock %} 3 {% block fabu_viewhead %}{% endblock %} 4 {% block daohangbody %} 5 <div class="col-md-4 column "></div> 6 <div class="col-md-4 column "> 7 <h2 href="#" class="text-center">{{ fa.title }}</h2> 8 <br> 9 <p class="text-center"> 10 <a href="{{ url_for('yonghu',username_id=fa.author_id,tag=1) }}"> 11 <small>{{ fa.author.username }}</small> 12 </a>    13 <span class="pull-center"><small>{{ fa.creat_time }}</small></span> 14 </p> 15 <hr> 16 <p>{{ fa.detail }}</p> 17 <hr> 18 19 <form action="{{ url_for('comment') }}" method="post"> 20 <div class="form-group"> 21 <textarea name="pinglun" class="form-control" rows="5" id="pinglun" 22 placeholder="请输入评论"></textarea> 23 <input type="hidden" name="fa_id" value="{{ fa.id }}"> 24 </div> 25 <button type="submit" class="btn btn-default">发送</button> 26 <br> 27 <br> 28 29 <h4>评论:({{ fa.comments|length }})</h4> 30 <ul class="list-unstyled"> 31 {% for foo in fa.comments %} 32 <li class="list-group-item"> 33 <a href="{{ url_for('yonghu',username_id=foo.author_id,tag=1) }}"><span class="glyphicon glyphicon-fire"></span>{{ foo.author.username }}</a> 34 <span class="badge pull-right">{{ foo.creat_time }}</span> 35 <p>{{ foo.detail }}</p> 36 <br> 37 </li> 38 {% endfor %} 39 </ul> 40 </form> 41 <br> 42 <br> 43 <br> 44 45 </div> 46 <div class="col-md-4 column "></div> 47 {% endblock %}
1 {% extends "daohang.html" %} 2 3 {% block yonghufathertitle %}个人中心{% endblock %} 4 {% block yonghufatherhead %} 5 <style> 6 .nav1 li{ 7 padding: 10px; 8 } 9 </style> 10 {% endblock %} 11 12 {% block daohangbody %} 13 <div class="col-md-4 column "></div> 14 <div class="col-md-4 column "> 15 <h3 class="glyphicon glyphicon-fire" href="#">{{ username }}</h3> 16 <hr> 17 <ul class="nav nav-pills"> 18 <li class="active" role="presentation"><a href="{{ url_for('yonghu',username_id=userid,tag=1) }}">个人信息</a></li> 19 <li class="active" role="presentation"><a href="{{ url_for('yonghu',username_id=userid,tag=2) }}">发布信息</a></li> 20 <li class="active" role="presentation"><a href="{{ url_for('yonghu',username_id=userid,tag=3) }}">评论信息</a></li> 21 </ul> 22 23 24 {% block yonghubody %}{% endblock %} 25 </div> 26 <div class="col-md-4 column "></div> 27 {% endblock %}
1 {% extends 'yonghucenter.html' %} 2 3 {% block yonghubody %} 4 <h3 class="text-center">个人信息</h3> 5 <ul class="list-unstyled nav1"> 6 <li class="list-group-item-success">用户:{{ username }}</li> 7 <li class="list-group-item-info">编号:{{ userid }}</li> 8 <li class="list-group-item-success">问答:{{ fabus|length }}篇</li> 9 <li class="list-group-item-info">评论:{{ comments|length }}条</li> 10 </ul> 11 12 {% endblock %}
1 {% extends 'yonghucenter.html' %} 2 3 {% block yonghubody %} 4 5 <div> 6 <h3 class="text-center">全部发布信息({{ fabus|length }})</h3> 7 <ul class="list-unstyled"> 8 {% for foo in fabus %} 9 <li class="list-group-item"> 10 <a href="{{ url_for('yonghu',username_id=foo.author_id,tag=1) }}"><span 11 class="glyphicon glyphicon-fire"></span>{{ foo.author.username }}</a> 12 <h4 class="text-center"><a href="{{ url_for('fabuview',fabu_id=foo.id) }}">{{ foo.title }}</a> 13 </h4> 14 <span class="badge pull-right">{{ foo.creat_time }}</span> 15 <br> 16 <p>{{ foo.detail }}</p> 17 </li> 18 {% endfor %} 19 </ul> 20 <br> 21 <br> 22 <br> 23 </div> 24 25 {% endblock %}
{% extends 'yonghucenter.html' %} {% block yonghubody %} <div> <h3 class="text-center">全部评论信息({{ comments|length }})</h3> <ul class="list-unstyled"> {% for foo in comments %} <li class="list-group-item"> <a href="{{ url_for('yonghu',username_id=foo.author_id,tag=1) }}"><span class="glyphicon glyphicon-fire"></span>{{ foo.author.username }}</a> <span class="badge pull-right">{{ foo.creat_time }}</span> <p>{{ foo.detail }}</p> <br> </li> {% endfor %} </ul> <br> <br> <br> </div> {% endblock %}