制作首页的显示列表

py代码

  1 from flask import Flask, render_template, request, redirect, url_for, session
  2 from flask_sqlalchemy import SQLAlchemy
  3 import config
  4 from datetime import datetime
  5 from functools import wraps
  6 
  7 
  8 
  9 
 10 app = Flask(__name__)
 11 app.config.from_object(config)
 12 db = SQLAlchemy(app)
 13 
 14 
 15 class User(db.Model):
 16     __tablename__ = 'user'
 17     id = db.Column(db.Integer, primary_key=True, autoincrement=True)
 18     username = db.Column(db.String(20), nullable=False)
 19     password = db.Column(db.String(20), nullable=False)
 20     nickname = db.Column(db.String(20), nullable=True)
 21 
 22 
 23 class Wenda(db.Model):
 24     __tablename__ = 'wenda'
 25     id = db.Column(db.Integer, primary_key=True, autoincrement=True)
 26     title = db.Column(db.String(100), nullable=False)
 27     detail = db.Column(db.Text, nullable=False)
 28     creat_time = db.Column(db.DateTime, default=datetime.now)
 29     author_id = db.Column(db.Integer, db.ForeignKey('user.id'))
 30     author = db.relationship('User', backref=db.backref('wenda'))
 31 
 32 
 33 
 34 # db.create_all()   #是否链接成功
 35 
 36 
 37 # 数据添加
 38 # user=User(username='ma',password='gg')
 39 # db.session.add(user)
 40 # db.session.commit()
 41 #
 42 #
 43 # 数据更新
 44 #
 45 # user = User.query.filter(User.username=='hh').first()
 46 # user.password='gg'
 47 # db.session.commit()
 48 #
 49 #
 50 # 数据查询
 51 # user = User.query.filter(User.username=='ma').first()
 52 # print(user.username,user.password)
 53 #
 54 # 数据删除
 55 # user = User.query.filter(User.username=='ma').first()
 56 # db.session.delete(user)
 57 # db.session.commit()
 58 
 59 
 60 # session会话连接
 61 # filter()过滤器
 62 # route制定路径和函数之间的关系
 63 # def定义一个变量
 64 
 65 @app.route('/')
 66 def moban():
 67     context = {
 68         'user':'hhhhhh'
 69 
 70     }
 71     return render_template('moban.html',**context)
 72 
 73 
 74 @app.route('/login/', methods=['GET', 'POST'])  # 跳转登陆,methods定义它有两种请求方式
 75 def login():
 76     if request.method == 'GET':
 77         return render_template('login.html')
 78     else:
 79         username = request.form.get('user')
 80         password = request.form.get('psw')
 81         user = User.query.filter(User.username == username).first()  # 判断用户名是否存在
 82         if user:
 83            if user.password == password:
 84                session['user']=username
 85                session.permanent = True
 86                return redirect(url_for('moban'))
 87         else:
 88             return '用户名不存在'
 89 
 90 
 91 @app.context_processor
 92 def mycontext():
 93     username=session.get('user')
 94     if username:
 95         return {'username':username}
 96     else:
 97         return {}
 98 
 99 def loginFirst(func): #参数是函数
100     @wraps(func)
101     def wrapper(*args, ** kwargs): #定义个函数将其返回
102         if session.get('user'):
103             return func(*args, ** kwargs)
104         else:
105             return redirect(url_for('login'))
106     return wrapper #返回一个函数
107 
108 @app.route('/register/', methods=['GET', 'POST'])  # 跳转注册,methods定义它有两种请求方式
109 def register():
110     if request.method == 'GET':
111         return render_template('register.html')
112     else:
113 
114         username = request.form.get('user')
115         password = request.form.get('psw')
116         nickname = request.form.get('nickname')
117         user = User.query.filter(User.username == username).first()  # 判断用户名是否存在
118         if user:
119             return u'该用户已存在'
120         else:
121             user = User(username=username, password=password, nickname=nickname)
122             db.session.add(user)
123             db.session.commit()
124             return redirect(url_for('login'))
125 
126 @app.route('/logout/')
127 def logout():
128     session.clear()
129     return render_template('moban.html')
130 
131 @app.route('/wenda/',methods=['GET', 'POST'])  # 跳转注册,methods定义它有两种请求方式
132 @loginFirst
133 def wenda():
134     if request.method == 'GET':
135         return render_template('wenda.html')
136     else:
137         title = request.form.get('title')
138         detail = request.form.get('detail')
139         author_id = User.query.filter(User.username == session.get('user')).first().id
140         wenda = Wenda(title = title,detail =detail,author_id = author_id)
141         db.session.add(wenda)
142         db.session.commit()
143         return redirect(url_for('moban'))
144 
145 
146 if __name__ == '__main__':
147     app.run(debug=True)

首页代码

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>
 6         首页
 7         {% block logintitle %}{% endblock %}
 8         {% block registertitle %}{% endblock %}
 9         {% block wendatitle %}{% endblock %}
10     </title>
11 {% block loginhead %}{% endblock %}
12 {% block registerhead %}{% endblock %}
13 {% block wendahead %}{% endblock %}
14 
15 </head>
16 <body id="myBody" style="background-color: lightcyan">
17 <nav>
18 <img src="{{ url_for('static',filename='image/gzsxy.png') }}" width="2200px" >
19 <br>
20 <script>
21 document.write(Date())
22 </script>
23 <br>
24     <a href="{{ url_for('moban') }}">首页</a>
25     {% if username  %}
26     <a href="#">{{ username }}</a>
27     <a href="{{ url_for('logout') }}">注销</a>
28     {% else  %}
29     <a href="{{ url_for('login') }}" >登录</a>
30     <a href="{{ url_for('register') }}">注册</a>
31     {% endif %}
32    <a href="{{ url_for('wenda') }}">问答</a>
33    <input type="text" placeholder="请输入关键字">
34     <button type="submit">搜索</button>
35    </nav>
36 <p>欢迎登陆{{ username }}</p>
37 <div class="list_container">
38     <ul class="news-list">
39         <li class="list-group-item">
40             <span class="glyphicon glyphicon-leaf" aria-hidden="true"></span>
41             <a href="#">{{ user }}</a>
42             <br>
43             <a href="#">标题</a>
44             <br>
45             <span class="badge">发布时间</span>
46             <p style="background-color: aqua">内容</p>
47         </li>
48 
49     </ul>
50 
51 </div>
52 {% block loginbody %}{% endblock %}
53 {% block registerbody %}{% endblock %}
54 {% block wendabody %}{% endblock %}
55 </body>
56 </html>

 

posted @ 2017-11-29 15:49  013洪辉  阅读(160)  评论(0编辑  收藏  举报