Python_Flask_Webapp选择菜单不起作用

时间:2016-09-05 16:06:15

标签: javascript jquery python html flask

我正在学习Flask Web Development这本书,我在我的页面上有一个功能,在"帐户"有一个选择菜单,我可以选择里面的功能,即更改密码,或注销。 但奇怪的是,选择菜单在索引页面中不起作用,当我点击"帐户" ,在其他页面中,例如,在/ user / AllenXu页面下,它可以正常工作。

http://localhost:5000/user/AllenXu

other pages

但在我的索引页面中,您可以看到它无效。

index page

让我感到困惑的是,选择菜单代码是在base.html中设置的,它是从 bootstrap 模板扩展而来的,其他页面是从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 %}

先谢谢你的帮助!! 如果需要更多信息,请告诉我

1 个答案:

答案 0 :(得分:0)

最后,我发现导致这个问题的问题......

因为...在我的index.html中,我在{%block page_content%}中插入了{%block scripts%} ....

“块”应该是seprarte ...如果块A在块B内,则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>