问:我在这里阅读了其他一些答案,说在关注者/关注对象之后删除括号,但这似乎对我不起作用。不太清楚这是想要什么,目前还不清楚。
午餐
进口 日期时间
从烧瓶进口瓶,克,render_template ,闪光灯,重定向,url_for从flask.ext.bcrypt进口check_password_hash从flask.ext.login进口LoginManager ,login_user ,CURRENT_USER ,login_required ,logout_user进口形式导入模型应用程式=瓶(__name__ )应用程式。密钥
= '这是我们的超级秘密密钥。不要与任何人分享!”
login_manager = LoginManager ()
login_manager 。init_app (应用程序)
login_manager 。login_view = 'login'
@ login_manager.user_loader def load_user (userid ):尝试:返回模型。用户。选择()。其中,(型号。用户。ID == INT (用户ID ))
。get ()
除外模型。didNotExist :返回None @ app.before_request def before_request ():g 。db =模型。数据库g 。db 。connect ()g 。用户= current_user @ app.after_request def after_request (响应):g 。db 。close ()返回响应@ app.route (
'/ register' , 方法= ('GET' , 'POST' ))
def register ():
form = forms 。SignUpInForm ()如果为form 。validate_on_submit ():模型。用户。new (电子邮件=表格。电子邮件。数据,密码=表格。密码。数据)flash (“感谢注册!” )返回
render_template ('register.html' , 形式=形式)
@ app.route ('/登录' ,方法= ('GET' ,'POST' ))DEF登录():形式=形式。SignUpInForm ()如果为form 。validate_on_submit ():尝试:user = models 。用户。get (模型。用户。电子邮件==表格
。电子邮件。数据
),如果check_password_hash (用户,密码,表单,密码,数据):login_user (用户)闪光灯(“你现在已经登录!” )其他:闪存(“与电子邮件/密码组合没有用户” ),除了模型。didNotExist :flash (“没有用户使用该电子邮件/密码组合” )返回render_template (
'register.html' , 形式=形式)
@ app.route ('/秘密' )@login_required高清的秘密():返回“我应该只看到登录用户” @ app.route ('/注销' )DEF注销():logout_user ()返回重定向(url_for ('登录' ))@ app.route ('/' )DEF指数():返回render_template ('的index.html' )@app。路线
('/ order' , 方法= ('GET' , 'POST' ))
def order_lunch ():
form = forms 。LunchOrderForm ()如果为form 。validate_on_submit ():模型。LunchOrder 。创建(用户=克。用户。_get_current_object (),日期=形式。日期。数据,顺序=形式。
订购。数据。条()
)返回render_template ('lunch.html' ,形式=形式)@ app.route ('/今天)@login_required DEF今日():为了=模型。LunchOrder 。选择()。其中(车型。LunchOrder 。日期==日期时间。日期。今天()和模型。
LunchOrder 。用户 == 克。用户。_get_current_object ()
)。获得()返回render_template ('today.html' ,为了=顺序)@ app.route ('/ cancel_order / <INT:ORDER_ID>' )@login_required高清cancel_order (ORDER_ID ):尝试:为了=模型。LunchOrder 。选择()。其中(id =
order_id ,
用户= g 。用户。_get_current_object ())。get ()除外模型。DidNotNotExist :传递其他:命令。delete_instance ()返回重定向(url_for ('index' ))@ app.route ('/ follow / <int:user_id>' )@login_required def follow (user_id ):try :user = models
。用户。得到(
型号。用户。ID == USER_ID )模型。关系。创建(FROM_USER =克。用户。_get_current_object (),to_user =用户)除(模型。DoesNotExist ,模型。IntegrityError ):通返回重定向(url_for ('索引' ))@ app.route
('/ unfollow / <int:user_id>' )
@login_required
def 取消关注(user_id ):
try :user = models 。用户。得到(型号。用户。ID == USER_ID )模型。关系。得到(车型。关系。FROM_USER ==摹。用户。_get_current_object (),模型。关系。
to_user == user
)。delete_instance ()除(模型。DoesNotExist ,模型。IntegrityError ):通返回重定向(url_for ('索引' ))@ app.route ('/简档/ <INT:USER_ID>' )DEF轮廓(USER_ID ):用户=模型。用户。选择()。哪里(模型。用户。
id == user_id
)。get ()return render_template ('profile.html' ,user = user )
models.py
进口 日期时间
从flask.ext.bcrypt进口generate_password_hash从flask.ext.login进口UserMixin从peewee进口* DATABASE = SqliteDatabase (':内存:' )类用户(UserMixin ,型号):电子邮件= CharField (唯一=真)密码= CharField (max_length = 100 )join_date = DateTimeField
(默认值=日期时间,日期时间。现在)
生物= CharField (默认= '' )类元:数据库= DATABASE @property高清以下(个体经营):回报(用户。选择() 。加入(关系,在=关系。to_user )。地方(关系。
FROM_USER == 自我)
)@property高清的追随者(自我):回报(用户。选择() 。联接(关系,在=关系。FROM_USER )。在那里(的关系。to_user ==自我))@classmethod高清新(CLS ,电子邮件,密码):cls 。创造
(
email = email ,password = generate_password_hash (password ))类LunchOrder (Model ):order = TextField ()date = DateField ()user = ForeignKeyField (User ,related_name = “ orders” )类关系(Model ):from_user = ForeignKeyField (用户,related_name =
“关系” )
to_user = ForeignKeyField (用户,related_name = “related_to” )created_at = DateTimeField字段(默认=日期时间,日期时间。现在)类元:数据库= DATABASE指数= ((('FROM_USER' ,'to_user' ),真) ,)def initialize ():DATABASE 。连接()
数据库。create_tables ([ User , LunchOrder ], safe = True )
数据库。关闭()
templates / profile.html
{%扩展“ layout.html”%}
{%来自“ macro.html”导入hide_email%}
{%块内容%}
< h1 > {{hide_email(user)}} </ h1 > < dl > < dt >午餐:</ dt > < dd > {{user.orders()。count()}} </ dd > < dt >关注者:</ dt > < dd > {{user.followers.count()}} </ </ dd > < dt >以下:</
dt >
< dd > {{user.following.count()}} </ dd > </ dl > {%endblock%}
答:该错误信息是令人误解的。该错误实际上与以下order行有关:
< dl >
< dt >午餐:</ dt > < dd > {{user.orders.count()}} </ dd > {#在“订单”后删除()#}
< dt >关注者:</ dt > < dd > {{user.followers.count()}} </ dd > < dt >以下:</ dt > < dd > {{user.following.count()}} </ dd > </ dl >