forked from ArvinLimeng/Flask-BBS
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathapp.py
More file actions
120 lines (109 loc) · 4.06 KB
/
app.py
File metadata and controls
120 lines (109 loc) · 4.06 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
from flask import Flask,render_template,request,redirect,url_for,session
import config
from models import User,Question,Answer
from exts import db
from decorators import login_required
app = Flask(__name__)
app.config.from_object(config)
db.init_app(app)
@app.route('/')
def index():
context={
'questions': Question.query.order_by('-create_time').all()
}
return render_template('index.html',**context)
@app.route('/login/',methods=['GET','POST'])
def login():
if request.method == 'GET':
return render_template('login.html')
else:
telephone = request.form.get('telephone')
password = request.form.get('password')
user = User.query.filter(User.telephone == telephone, User.password == password).first()
if user:
session['user_id'] = user.id
session.permanent = True
return redirect(url_for('index'))
else:
return render_template('login.html',error='用户名或密码错误')
@app.route('/regist/',methods=['GET','POST'])
def regist():
if request.method == 'GET':
return render_template('regist.html')
else:
telephone = request.form.get('telephone')
username = request.form.get('username')
password1 = request.form.get('password1')
password2 = request.form.get('password2')
# 手机号验证 如果手机号已经被注册了 就不能再注册了
user = User.query.filter(User.telephone == telephone).first()
if user:
return '该手机号码已经被注册,请更换手机号码'
else:
# 判断 password1 和password2是否相等
if password1 != password2:
return '两次密码不一致,请重新填写'
else:
user = User(telephone=telephone,username=username,password=password1)
db.session.add(user)
db.session.commit()
# 如果注册成功 则直接跳转到登录页面
return redirect(url_for('login'))
@app.route('/logout/')
def logout():
# 删除session
# session.pop('user_id')
# del session['user_id']
session.clear()
return redirect(url_for('login'))
@app.route('/question/',methods=['GET','POST'])
@login_required
def question():
if request.method == 'GET':
return render_template('question.html')
else:
title = request.form.get('title')
content = request.form.get('content')
question = Question(title=title,content=content)
user_id = session.get('user_id')
user = User.query.filter(User.id == user_id).first()
question.author = user
db.session.add(question)
db.session.commit()
return redirect(url_for('index'))
@app.route('/detail/<question_id>')
def detail(question_id):
question_model = Question.query.filter(Question.id==question_id).first()
return render_template('detail.html',question=question_model,question_count=len(question_model.answers))
@app.route('/add_answer/',methods=['POST'])
@login_required
def add_answer():
content = request.form.get('answer_content')
question_id = request.form.get('question_id')
answer = Answer(content=content)
user_id = session['user_id']
user = User.query.filter(User.id==user_id).first()
answer.author = user
question = Question.query.filter(Question.id==question_id).first()
answer.question = question
db.session.add(answer)
db.session.commit()
return redirect(url_for('detail',question_id=question_id))
@app.route('/search/',methods=['POST'])
def search():
search_key = request.form.get('search_key')
context = {
'questions': Question.query.filter(Question.title.contains(search_key)).order_by('-create_time').all()
}
return render_template('index.html', **context)
@app.context_processor
def my_context_processor():
user_id = session.get('user_id')
if user_id:
user = User.query.filter(User.id == user_id).first()
if user:
return {'user': user}
else:
return {}
if __name__ == '__main__':
app.run()