2015-11-26 16 views
0

我正在通過Oreilly的燒瓶介紹工作,並且暫時停留在某個部分。它與基於用戶配置文件生成動態網址。在URL中顯示用戶名的Python Flask

我views.py

@main.route('/user/<username>', methods=['GET', 'POST']) 
def user(username): 
    user = User.query.filter_by(username=username).first() 
    if user == None: 
     flash(user) 
     return redirect(url_for('auth.register')) 
    return render_template('/main/profile.html', user=user) 

models.py

class User(UserMixin, db.Model): 
    __tablename__ = 'users' 
    id = db.Column(db.Integer, primary_key=True) 
    username = db.Column(db.String(64), unique=True, index=True) 
    password_hash = db.Column(db.String(128)) 
    name = db.Column(db.String(64)) 
    about_me = db.Column(db.Text()) 
    member_since = db.Column(db.DateTime(), default=datetime.utcnow) 
    last_seen = db.Column(db.DateTime(), default=datetime.utcnow) 

當我訪問一個網頁,我沒有得到一個用戶名和redircted。如果我改變

我views.py

@main.route('/user/<username>', methods=['GET', 'POST']) 
def user(username): 
    user = Current_user 

我讓頁面的用戶名可見顯示了使用{{user.username}},但是URL看起來像

http://0.0.0.0:8080/main/user/%3Capp.models.User%20object%20at%200x7f31fa279550%3E 

我在做什麼錯?

+0

您如何生成您的網址?另外,應該檢查'None'的身份,而不是相等:'如果用戶是None:'。 – dirn

回答

3

您正將用戶對象作爲用戶名的值傳遞給url_for。當你這樣做時,用戶對象被轉換成插入到URL中的字符串表示。您致電filter_by查找具有該值的用戶名。你想傳遞的只是用戶名。

<a href="{{ url_for('main.user', username=g.user.username) }}">Profile</a> 
+0

嗒嗒我花了很長時間,我甚至沒有看:/你的男人! – Anekdotin