首页 > 解决方案 > 无法输入“Profile_pic URL”

问题描述

我尝试在 postgres 中创建 db 后输入用户详细信息,但服务器不接受 Profile_pic URL,这个错误出现在我身上:(我尝试了几个图片 URL)

Not Found

The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again.

应用程序.py:

     from flask import Flask, render_template, request, redirect, url_for
    from flask_sqlalchemy import SQLAlchemy
    from flask_security import Security, SQLAlchemyUserDatastore, UserMixin, RoleMixin, login_required
    from flask_login import current_user
    
    app = Flask(__name__)
    app.config["SQLALCHEMY_DATABASE_URI"] = 'postgresql://postgres:jojo1437@localhost/flasksocial'
    app.config['SECRET_KEY'] = 'super-secret'
    app.config['SECURITY_REGISTERABLE'] = True
    app.config['SECURITY_PASSWORD_HASH'] = 'bcrypt'
    app.config['SECURITY_PASSWORD_SALT'] = '$2b$16$PnnIgfMwKOjGX4SKHqSOPO'
    
    db = SQLAlchemy(app)
    
    
    class Post(db.Model):
        id = db.Column(db.Integer, primary_key=True)
        post_content = db.Column(db.String(200))
        posted_by = db.Column(db.String(100))
    
        def __init__(self, post_content, posted_by):
            self.post_content = post_content
            self.posted_by = posted_by
    
            def __repr__(self):
                return '<post %r>' % self.post_content
    
    
    # https://pythonhosted.org/Flask-Security/quickstart.html
    # Define models
    
    roles_users = db.Table('roles_users',
                           db.Column('user_id', db.Integer(), db.ForeignKey('user.id')),
                           db.Column('role_id', db.Integer(), db.ForeignKey('role.id')))
    
    
    class userDetails(db.Model):
        id = db.Column(db.Integer, primary_key=True)
        user_id = db.Column(db.Integer)
        user_name = db.Column(db.String(100))
        profile_pic = db.Column(db.String(1000))
        location = db.Column(db.String(100))
    
        def __init__(self, user_id, user_name, profile_pic, location):
            self.user_id = user_id
            self.user_name = user_name
            self.profile_pic = profile_pic
            self.location = location
    
        def __repr__(self):
            return '<userDetails %r>' % self.user_name
    
    
    class Role(db.Model, RoleMixin):
        id = db.Column(db.Integer(), primary_key=True)
        name = db.Column(db.String(80), unique=True)
        description = db.Column(db.String(255))
    
    
    class User(db.Model, UserMixin):
        id = db.Column(db.Integer, primary_key=True)
        email = db.Column(db.String(255), unique=True)
        password = db.Column(db.String(255))
        active = db.Column(db.Boolean())
        confirmed_at = db.Column(db.DateTime())
        roles = db.relationship('Role', secondary=roles_users,
                                backref=db.backref('users', lazy='dynamic'))
    
    
    # Setup Flask-Security
    user_datastore = SQLAlchemyUserDatastore(db, User, Role)
    security = Security(app, user_datastore)
    
    
    @app.route('/')
    @login_required
    def index():
        return "welcom to the social app"
    
    
    @app.route('/editprofile')
    @login_required
    def edit_profile():
        now_user = User.query.filter_by(email=current_user.email).first()
        return render_template('user_details.html', now_user=now_user)
    
    
    @app.route('/add_user_detail',methods=['POST'])
    def addUserDetails():
        user_details = userDetails(request.form['pid'], request.form['user_name'], request.form['profile_pic'],
                                   request.form['location'])
        db.session.add(user_details)
        db.session.commit()
        return redirect(url_for('index'))

if __name__ == "__main__":
    app.run(debug=True)

user_details.html:

<html>
<head>

</head>
<body>
    <form method="post" action="addUserDetails">
            <label>User Name: </label>
            <input type="text" id="user_name" name="user_name">
            <br>
            <label>Profile pic: </label>
            <input type="text" id="profile_pic" name="profile_pic">
            <br>
            <label>Location: </label>
            <input type="text" id="location" name="location">
            <br>

            <input type="hidden" id="pid" name="pid" value="{{ now_user.id }}">
            <input type="submit">
            <br>
    </form>
</body>
</html>

**请为 flask_SQLALchemy 中的大人物提供任何帮助

我尝试了很多图片网址,但我不知道问题出在哪里

在此处输入图像描述

标签: pythonflask

解决方案


您的问题似乎出在您的 HTML 代码中。您指定addUserDetails为操作,这是错误的。正确的方法应该是:

<form method="post" action="{{ url_for('addUserDetails') }}">

推荐阅读