question about endpoint in flask

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • centella
    New Member
    • May 2016
    • 3

    question about endpoint in flask

    hi there,when learning flask,i have confronted a question,which is "BuildError : Could not build url for endpoint 'login'. Did you mean 'index' instead?",my code is below.
    Code:
    __author__ = 'Administrator'
    from app import app,db,lm,oid
    from flask import render_template,flash,redirect,session,url_for,request,g
    from flask.ext.login import login_user,logout_user,current_user,login_required
    from models import User
    from form import LoginForm#,EditForm
    from datetime import datetime
    
    @app.route('/')
    @app.route('/index')
    @login_required
    def index():
        user = g.user
        #user = { 'nickname': 'Miguel' } # fake user
        posts = [ # fake array of posts
            {
                'author': { 'nickname': 'John' },
                'body': 'Beautiful day in Portland!'
            },
            {
                'author': { 'nickname': 'Susan' },
                'body': 'The Avengers movie was so cool!'
            }
        ]
        return render_template("index.html",
            title = 'Home',
            user = user,
            posts = posts)
    @lm.user_loader
    def load_user(id):
        return User.query.get(int(id))
    @app.route('/login',methods=['GET','POST'])
    @app.before_request
    def before_request():
        g.user = current_user
    
    def login():
        if g.user is not None and g.user.is_authenticated:
            return redirect(url_for('index'))
        form = LoginForm()
        print form.openid.data
        if form.validate_on_submit():
            session['remember_me'] = form.remember_me.data
            a= User.query.get(2).nickname
            print 'dataall   '+str(a)
            user = User.query.filter_by(nickname=form.openid.data).first()
            print 'query result  ' + str(user)
                    if user :
               print 'user start'
                          login_user(user)
               return redirect( url_for('index'))
               print 'user done'
        return render_template('login.html',title = 'Sign In',form = form,providers = app.config['OPENID_PROVIDERS'])
    
    
    @app.route('/user/<nickname>')
    @login_required
    def user(nickname):
        user = User.query.filter_by(nickname = nickname).first()
        if user == None:
            flash('User' + nickname +"not found.")
            return redirect(url_for('index'))
        posts = [
            {'author':'user','body':'Test post #1'},
            {'author':'user','body':'Test post #2'}
        ]
        return render_template('user.html',user=user,posts =posts)
    html file is below
    Code:
    <html> <head>
        {% if title %}
        <title>{{title}} - microblog</title>
        {% else %}
        <title>microblog</title>
        {% endif %}
      </head> <body> <div>Microblog:
         <a href="{{ url_for('index') }}">Home</a> <a href="{{ url_for('user', nickname = g.user.nickname) }}">Your Profile</a> <a href="{{ url_for('logout') }}">Logout</a> </div> <hr>
        {% with messages = get_flashed_messages() %}
        {% if messages %}
        <ul>
        {% for messages in messages %}
            <li>{{ message }}</li>
        {% endfor %}
        </ul>
        {% endif %}
        {% endwith %}
        {% block content %}{% endblock %}
      </body> </html>
    Last edited by gits; Jun 27 '19, 01:17 PM. Reason: added code tags
Working...