2016-09-05 10 views
0

私はFlask Web Developmentを学んでいます。私のページには、「アカウント」に選択メニューがあり、パスワードを変更する機能があります。またはログアウトします。 しかし、インデックスページで選択メニューが機能しないのは奇妙です。たとえば、「user」/「AllenXu」ページのように他のページで「account」をクリックしても応答はなく、正常に動作します。Python_Flask_Webapp選択メニューが機能しません

http://localhost:5000/user/AllenXu 

other pages

しかし、私のインデックスページで、uが、それは動作しません見ることができます。私を混乱させている何

index page

コードがテンプレートブートストラップから延びているbase.htmlに設定された選択メニュー、および他のページがそう実際にそれが必要、base.htmlから延びているということですbase.htmlから拡張されたすべてのページで動作します。

そして、実際にそれがhttp://localhost:5000/user/AllenXu

で作業を行いますが、なぜ、それはインデックスページでは動作しませんか?以下は

base.html私のコード情報である

{% extends "bootstrap/base.html" %} 

{% block title %}Flasky{% endblock %} 

{% block head %} 
{{ super() }} 
<link rel="shortcut icon" href="{{ url_for('static', filename='favicon.ico') }}" type="image/x-icon"> 
<link rel="icon" href="{{ url_for('static', filename='favicon.ico') }}" type="image/x-icon"> 
<link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='styles.css') }}"> 
{% endblock %} 





{% block navbar %} 
    <div class="navbar navbar-inverse" role="navigation"> 
    <div class="container"> 
    <div class="navbar-header"> 
    <button type="button" class="navbar-toggle"data-toggle="collapse" data-target=".navbar-collapse"> 
     <span class="sr-only">Toggle navigation</span> 
     <span class="icon-bar"></span> 
     <span class="icon-bar"></span> 
     <span class="icon-bar"></span> 
    </button> 
<a class="navbar-brand" href="{{url_for('main.index')}}">Flasky</a> 
    </div> 

<div class="navbar-collapse collapse"> 
    <ul class="nav navbar-nav"> 
    <li><a href="{{url_for('main.index')}}">Home</a></li> 

    {% if current_user.is_authenticated %} 
    <li><a href="{{ url_for('main.user', username=current_user.username) }}">Profile</a> 
    </li> 
    {% endif %} 
    </ul> 

    <ul class="nav navbar-nav navbar-right"> 

{% if current_user.is_authenticated %} 
       <li class="dropdown"> 
        <a href="#" class="dropdown-toggle" data-toggle="dropdown"> 
         <img src="{{ current_user.gravatar(size=18) }}"> 
         Account <b class="caret"></b> 
        </a> 
        <ul class="dropdown-menu"> 
         <li><a href="{{ url_for('auth.change_password') }}">Change Password</a></li> 
         <li><a href="{{ url_for('auth.change_email_request') }}">Change Email</a></li> 
         <li><a href="{{ url_for('auth.logout') }}">Log Out</a></li> 
        </ul> 
       </li> 
       {% else %} 
       <li><a href="{{ url_for('auth.login') }}">Log In</a></li> 
       {% endif %} 
      </ul> 
     </div> 
    </div> 
</div> 

{%endblock%} 
{%block content%} 
<div class="container"> 
    {% for message in get_flashed_messages() %} 
    <div class="alert alert-warning"> 
     <button type="button" class="close" data-dismiss="alert">&times;</button> 
     {{ message }} 
    </div> 
    {% endfor %} 
    {% block page_content %}{% endblock %} 
</div> 
{%endblock%} 

私のviews.py

from datetime import datetime 
from flask import render_template,session,redirect,url_for,flash 
from . import main 
from .forms import NameForm,EditProfileForm,EditProfileAdminForm,PostForm 
from .. import db 
from ..models import User,Role,Permission,Post 
from flask.ext.login import login_required,current_user 
from ..decorators import admin_required 

@main.route('/',methods=['GET','POST']) 
def index(): 
    form = PostForm() 
    if current_user.can(Permission.WRITE_ARTICLES) and form.validate_on_submit(): 
     post = Post(body = form.body.data,author = current_user._get_current_object()) 
     db.session.add(post) 
     return redirect(url_for('.index')) 
    posts = Post.query.order_by(Post.timestamp.desc()).all() 
    return render_template('index.html',form = form, posts = posts) 



@main.route('/user/<username>') 
def user(username): 
    user = User.query.filter_by(username = username).first() 
    if user is None: 
     abort (404) 
    return render_template('user.html',user = user) 
    enter code here 

私のindex.htmlファイル

{% extends "base.html" %} 
{% import "bootstrap/wtf.html" as wtf %} 
{% block title %}Flasky{% endblock %} 
{% block page_content %} 

{% block scripts %}   
{{ super() }}     
{{ moment.include_moment() }} 
{% endblock %} 

<div class="page-header"> 
    <h1>Hello, 
    {% if current_user.is_authenticated%} 
    {{ current_user.username }} 
    {% else %} 
    Stranger! 
    {% endif %} 
    </h1> 
</div> 

<div> 
    {% if current_user.can(Permission.WRITE_ARTICLES) %} 
    {{ wtf.quick_form(form) }} 
    {% endif %} 
</div> 
<ul class = "posts"> 
    {% for post in posts %} 
    <li class = "post"> 
    <div class="profile-thumbnail"> 
     <a href = "{{ url_for('.user',username = post.author.username) }}"> 
      <img class = "img-rounded profile-thumbnail" 
      src = "{{ post.author.gravatar(size = 40) }}"> 
     </a> 
</div> 

<div class="post-date">{{ moment(post.timestamp).fromNow() }}</div> 
<div class="post-author"> 
    <a href = "{{ url_for('.user',username = post.author.username) }}"> 
    {{ post.author.username }} 
    </a> 
    </div> 
    <div class = "post-body">{{ post.body }}</div> 
    </li> 
    {% endfor %} 
</ul> 
{% endblock %} 

私に手伝ってくれてありがとう! ...私のindex.htmlの中で、私は{%ブロックスクリプト%}を挿入するため は、任意のより多くの情報が必要な場合は、私が

+0

役に立ちません?。 。ポスト、エラーページ?..あなたはドロップダウンメニューを見ることができますか?できませんか? –

+0

@IronFistこんにちは、今まで私はこれらのページ---ホームページ、ユーザーページ、プロフィールページの編集、プロフィール管理ページの編集、パスワードページの変更、インデックスページのみが動作しません。 。 – NoDinner

+0

あなたの '{%block scripts%}'タグには、ブートストラップの.jsファイルもテンプレートにロードされていますか?私が尋ねる理由は、すべてのHTMLがレンダリングされる前に.jsファイルがロードされている可能性があるため、ドロップダウン機能が正しく機能しない可能性があるからです。私はあなたのインデックスルートが 'POST'メソッドを許可するオプションを持っていることにも気付きますが、あなたがそれを使っているようには見えません。フォームが提出されたときに処理するために、 'if request.method == 'POST':'を持つものが必要です。 –

答えて

0

を教えてください最後に、私はこれを原因となった問題...

を見つけました{%ブロックPAGE_CONTENT%} ...内部

ブロックAがブロックB内にある場合、「ブロック」はseprarte ...であるべきで、Aは何他のページ約

{% extends "base.html" %} 
{% import "bootstrap/wtf.html" as wtf %} 
{% block title %}Flasky{% endblock %} 
{% block page_content %} 

{% block scripts %}   
{{ super() }}     
{{ moment.include_moment() }} 
{% endblock %} 

<div class="page-header"> 
    <h1>Hello, 
    {% if current_user.is_authenticated%} 
    {{ current_user.username }} 
    {% else %} 
    Stranger! 
    {% endif %} 
    </h1> 
</div> 
関連する問題