私はFlask Web Developmentを学んでいます。私のページには、「アカウント」に選択メニューがあり、パスワードを変更する機能があります。またはログアウトします。 しかし、インデックスページで選択メニューが機能しないのは奇妙です。たとえば、「user」/「AllenXu」ページのように他のページで「account」をクリックしても応答はなく、正常に動作します。Python_Flask_Webapp選択メニューが機能しません
http://localhost:5000/user/AllenXu
しかし、私のインデックスページで、uが、それは動作しません見ることができます。私を混乱させている何
コードがテンプレートブートストラップから延びている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">×</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の中で、私は{%ブロックスクリプト%}を挿入するため は、任意のより多くの情報が必要な場合は、私が
役に立ちません?。 。ポスト、エラーページ?..あなたはドロップダウンメニューを見ることができますか?できませんか? –
@IronFistこんにちは、今まで私はこれらのページ---ホームページ、ユーザーページ、プロフィールページの編集、プロフィール管理ページの編集、パスワードページの変更、インデックスページのみが動作しません。 。 – NoDinner
あなたの '{%block scripts%}'タグには、ブートストラップの.jsファイルもテンプレートにロードされていますか?私が尋ねる理由は、すべてのHTMLがレンダリングされる前に.jsファイルがロードされている可能性があるため、ドロップダウン機能が正しく機能しない可能性があるからです。私はあなたのインデックスルートが 'POST'メソッドを許可するオプションを持っていることにも気付きますが、あなたがそれを使っているようには見えません。フォームが提出されたときに処理するために、 'if request.method == 'POST':'を持つものが必要です。 –