我正在学习Flask Web Development这本书,我在我的页面上有一个功能,在"帐户"有一个选择菜单,我可以选择里面的功能,即更改密码,或注销。 但奇怪的是,选择菜单在索引页面中不起作用,当我点击"帐户" ,在其他页面中,例如,在/ user / AllenXu页面下,它可以正常工作。
http://localhost:5000/user/AllenXu
但在我的索引页面中,您可以看到它无效。
让我感到困惑的是,选择菜单代码是在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">×</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 %}
先谢谢你的帮助!! 如果需要更多信息,请告诉我
答案 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>