当我通过路由/博客在浏览器中运行时,我收到内部服务器错误。这是什么意思,我怎么可能修复这个错误。运行其他路由时没有返回错误。
app.py:
from flask import Flask
from flask import render_template
from flask import request
from flask import session
from src.common.database import Database
from src.models.user import User
app = Flask(__name__)
app.secret_key = "Jongbin"
@app.route('/')
def home_template():
return render_template('home.html')
@app.route('/login')
def login_template():
return render_template('login.html')
@app.route('/register')
def register_template():
return render_template('register.html')
@app.before_first_request
def initialise_database():
Database.initialize()
@app.route('/auth/login', methods=['POST'])
def login_user():
email = request.form['email']
password = request.form['password']
if User.login_valid(email, password):
User.login(email)
else:
session['email'] = None
return render_template("profile.html", email=session['email'])
@app.route('/auth/register', methods=['POST'])
def register_user():
email = request.form['email']
password = request.form['password']
User.register(email, password)
return render_template("profile.html", email=session['email'])
@app.route('/blogs/<string:user_id>')
@app.route('/blogs')
def user_blogs(user_id=None):
if user_id is not None:
user = User.get_by_id(user_id)
else:
user = User.get_by_email(session['email'])
blogs = user.get_blogs()
return render_template("user_blogs.html", blogs=blogs, email=user.email)
if __name__ == '__main__':
app.run(port=4995)
user.py:
import uuid
import datetime
from flask import session
from src.common.database import Database
from src.models.blog import Blog
class User(object):
def __init__(self, email, password, _id=None):
self.email = email
self.password = password
self._id = uuid.uuid4().hex if _id is None else _id
@classmethod
def get_by_email(cls, email):
data = Database.find_one("users", {'email': email})
if data is not None:
return cls(**data)
return None
@classmethod
def get_by_id(cls, _id):
data = Database.find_one("users", {'_id': _id})
if data is not None:
return cls(**data)
@staticmethod
def login_valid(email, password):
user = User.get_by_email(email)
if user is not None:
return user.password == password
return False
@classmethod
def register(cls, email, password):
user = cls.get_by_email(email)
if user is None:
new_user = cls(email, password)
new_user.save_to_mongo()
session['email'] = email
return True
else:
return False
@staticmethod
def login(user_email):
session['email'] = user_email
@staticmethod
def logout():
session['email'] = None
def get_blogs(self):
return Blog.find_by_author_id(self._id)
def new_blog(self, title, description):
blog = Blog(author=self.email,
title=title,
description=description,
author_id=self._id)
blog.save_to_mongo()
@staticmethod
def new_post(blog_id, title, content, date=datetime.datetime.utcnow()):
blog = Blog.from_mongo(blog_id)
blog.new_post(title=title,
content=content,
date=date)
def json(self):
return {
"email": self.email,
"_id": self._id,
"password": self.password
}
def save_to_mongo(self):
Database.insert("users", self.json())