Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python AttributeError:“函数”对象没有属性“\u sa\u实例\u状态”_Python_Database_Flask_Model_Relationship - Fatal编程技术网

Python AttributeError:“函数”对象没有属性“\u sa\u实例\u状态”

Python AttributeError:“函数”对象没有属性“\u sa\u实例\u状态”,python,database,flask,model,relationship,Python,Database,Flask,Model,Relationship,我正在为一个社交媒体网站创建一个博客帖子功能。但是,当我单击“发布”按钮发布博客时,网站不会将我重定向到我输入的模板,同时在我的终端中显示错误:“AttributeError:“function”对象没有属性“_sa_instance_state” 查看回溯,我发现这与我所做的用户和BlogPost模型之间的关系有关 以下是my modelsor models.py的代码: 以下是发布博客的my viewsor views.py的代码: 下面是模板create_post.html的代码: 以下是

我正在为一个社交媒体网站创建一个博客帖子功能。但是,当我单击“发布”按钮发布博客时,网站不会将我重定向到我输入的模板,同时在我的终端中显示错误:“AttributeError:“function”对象没有属性“_sa_instance_state”

查看回溯,我发现这与我所做的用户和BlogPost模型之间的关系有关

以下是my modelsor models.py的代码:

以下是发布博客的my viewsor views.py的代码:

下面是模板create_post.html的代码:

以下是我的完整回溯:

: P/s。使用用户模型,所有视图、模板和代码都可以正常工作。 我是一名学生,我正在创建一个项目。我的计算机科学老师帮不了我,所以我真的被卡住了。请,请帮忙。谢谢大家!

编辑:这是一个糟糕的答案,但我很好奇它是否有效

:O

在user_post的第94行,您需要呼叫homeuser。。。filter\u bycreator=homeuser与filter\u bycreator=homeuser相对编辑:这是一个糟糕的答案,但我很好奇它是否有效

:O


在user_post的第94行,您需要呼叫homeuser。。。filter_bycreator=homeuser与filter_bycreator=homeuser相反,在user_post的第93行,您需要在定义home_user的行的末尾加上括号


在user_post的第93行,您需要在定义home_user的行的末尾加上括号


什么是家庭用户?嗨,kpie!home\u user是我为用户/视图中的另一个路由创建的变量:@users.route'/'def user\u postsurname:page=request.args.get'page',1,type=int home\u user=user.query.filter\u byusername=username.first\u或\u 404 blog\u posts=BlogPost.query.filter\u bycreator=home\u user.order\u byBlogPost.date.desc.paginatepage=page,per_page=5返回呈现模板'user_blog_posts.html',blog_posts=blog_posts,home_user=home_userhome_user什么是home_user?嗨!home\u user是我为用户/视图中的另一个路由创建的变量:@users.route'/'def user\u postsurname:page=request.args.get'page',1,type=int home\u user=user.query.filter\u byusername=username.first\u或\u 404 blog\u posts=BlogPost.query.filter\u bycreator=home\u user.order\u byBlogPost.date.desc.paginatepage=page,per_page=5返回呈现模板'user_blog_posts.html',blog_posts=blog_posts,home_user=home_userIt worked!!!该错误不再出现在我的终端中,但当我单击create_post.html上的post按钮时,它什么也不做。在我的代码中,它应该将用户重定向到core.index,然后再重定向到索引HTML模板。你能帮我解决这个问题吗?如果您需要更多的图片或代码,我很乐意发送给您。非常感谢。form.validate\u on\u submit是否为false?您可能最好使用views.py和BlogPostForm代码发布一个新问题。是的,form.validate\u on\u submit背后的代码不起作用。我的页面成功地显示了create_post.html,但单击按钮时没有重定向到core.index的index.html。好的,我将发布一个新问题。非常感谢你帮助我!!成功了!!!该错误不再出现在我的终端中,但当我单击create_post.html上的post按钮时,它什么也不做。在我的代码中,它应该将用户重定向到core.index,然后再重定向到索引HTML模板。你能帮我解决这个问题吗?如果您需要更多的图片或代码,我很乐意发送给您。非常感谢。form.validate\u on\u submit是否为false?您可能最好使用views.py和BlogPostForm代码发布一个新问题。是的,form.validate\u on\u submit背后的代码不起作用。我的页面成功地显示了create_post.html,但单击按钮时没有重定向到core.index的index.html。好的,我将发布一个新问题。非常感谢你帮助我!!嗨,kpie,我很抱歉,但我正在努力解决一个新问题,如果您能帮助我,那将是非常棒的:谢谢!嗨,kpie,我很抱歉,但我正在努力解决一个新问题,如果您能帮助我,那将是非常棒的:谢谢!
from werkzeug.security import generate_password_hash, check_password_hash
from flask_login import UserMixin
from datetime import datetime

@login_manager.user_loader
def load_user(user_id):
    return User.query.get(user_id)




class User(db.Model, UserMixin):
    __tablename__ = 'users'

    id = db.Column(db.Integer, primary_key=True)
    profile_image = db.Column(db.String(64), nullable=False, default='default_profile.jpg' ) 
    email = db.Column(db.String(64), unique=True, index=True) 
    first_name = db.Column(db.String(20))
    last_name = db.Column(db.String(20))
    username = first_name + last_name
    password_hash = db.Column(db.String(128))

    posts = db.relationship('BlogPost', backref='creator', lazy=True) 

    def __init__(self,email,first_name,last_name, password):    
        self.email = email
        self.first_name = first_name
        self.last_name = last_name
        self.password_hash = generate_password_hash(password)

    def check_password(self, password):
        return check_password_hash(self.password_hash, password)

    def __repr__(self):
        return f"Username: {self.username}"



class BlogPost(db.Model):

    users = db.relationship(User)

    blog_id = db.Column(db.Integer, primary_key=True)
    user_id = db.Column(db.Integer,db.ForeignKey('users.id'), nullable=False) #users.id  is taken from the tablename(users) and id in its table
    date = db.Column(db.DateTime, nullable=False, default=datetime.utcnow) 
    problem_name = db.Column(db.String(140), nullable=False)
    text = db.Column(db.Text, nullable=False)

    def __init__(self, text, problem_name, user_id):
        self.text = text
        self.problem_name = problem_name
        self.user_id = user_id

    def __repr__(self):
        return f"Post ID: {self.post_id} -- Date:{self.date}---{self.problem_name}" ```
blog_posts = Blueprint('blog_posts',__name__)

@blog_posts.route('/create', methods=['GET', 'POST'])
@login_required
def create_post():
    form = BlogPostForm()

    if form.validate_on_submit():

        blog_validated = BlogPost(problem_name=form.problem_name.data,
                                  text=form.text.data,
                                  user_id=current_user.id
                                  )
        db.session.add(blog_validated)
        db.session.commit()
        flash('Blog Post Created')
        return redirect(url_for('core.index'))

    return render_template('create_post.html', form=form)
{% extends "base.html" %}

{% block content %}
<div class="container">
<form method="POST" >
    {{ form.hidden_tag() }}
    {{ form.problem_name.label(class="form-control-label") }} {{ form.problem_name(class="form-group form-control") }}<br>
    {{ form.text.label }} {{ form.text(class="form-group form-control") }}<br>
    {{ form.problem_submit.label(class="btn btn-secondary")}}
</form>
</div>
{% endblock %}
@users.route('/<username>')
def user_posts(username):
     page = request.args.get('page',1,type=int)
     home_user = User.query.filter_by(username=username).first_or_404() # <= You're missing the ()
     blog_posts = BlogPost.query.filter_by(creator=home_user).order_by(BlogPost.date.desc()).paginate(page=page, per_page=5) return render_template('user_blog_posts.html', blog_posts=blog_posts, home_user=home_user)