Python 为什么不是';Django渲染我的块内容或识别登录用户?
我有Python 为什么不是';Django渲染我的块内容或识别登录用户?,python,django,django-templates,Python,Django,Django Templates,我有base.html它包含一个{%block bodycontent%}和{%endblock%}标记,这个模板到目前为止在其他任何地方都可以工作,并且驻留在项目级模板目录中。酷 然后,在特定于应用程序的模板目录中,我有directory.html,它正确地包含{%extends'base.html%} 但是,有两个问题:如果我登录并转到/directory/url,我的导航栏(位于base.html模板中)不会显示正在登录的用户(从页面导航,恢复导航栏的正常登录用户显示) 因此,direct
base.html
它包含一个{%block bodycontent%}
和{%endblock%}
标记,这个模板到目前为止在其他任何地方都可以工作,并且驻留在项目级模板目录中。酷
然后,在特定于应用程序的模板目录中,我有directory.html
,它正确地包含{%extends'base.html%}
但是,有两个问题:如果我登录并转到/directory/
url,我的导航栏(位于base.html
模板中)不会显示正在登录的用户(从页面导航,恢复导航栏的正常登录用户显示)
因此,directory.html
模板似乎没有接收到用户对象,{%if user.is\u authenticated%}
失败,只是呈现了未登录的版本
另一个问题是directory.html
根本不填充bodycontent
。或者别的什么。我甚至插入了标准文本和额外的HTML标记,试图看到一些东西,但除了base.HTML
模板之外,什么也看不到
项目级URL.py
urlpatterns = patterns('',
url(r'^$', LandingPage.as_view(), name='home'),
url(r'^accounts/', include('registration.backends.default.urls')),
url(r'^about/', AboutPage.as_view(), name='about'),
url(r'^login/', loginPage, name='login'),
url(r'^logout/', logoutPage, name='logout'),
url(r'^admin/', include(admin.site.urls), name='admin'),
url(r'^register/', registrationPage, name='register'),
url(r'^profile/', include(khusers_urlpatterns)),
url(r'^directory/', displayDirectory, name = 'directory'),
url(r'^addfriend/', AddFriend, name="add friend")
)
@login_required
def displayDirectory (request, options=None):
"""displays a list of public profile pages"""
latestModUsers = KHPublicPage.objects.order_by('-lastModified')[:20]
template = loader.get_template('khusers/directory.html')
context = RequestContext(request, {'profiles': latestModUsers})
return HttpResponse(template.render(context))
从视图中.py
urlpatterns = patterns('',
url(r'^$', LandingPage.as_view(), name='home'),
url(r'^accounts/', include('registration.backends.default.urls')),
url(r'^about/', AboutPage.as_view(), name='about'),
url(r'^login/', loginPage, name='login'),
url(r'^logout/', logoutPage, name='logout'),
url(r'^admin/', include(admin.site.urls), name='admin'),
url(r'^register/', registrationPage, name='register'),
url(r'^profile/', include(khusers_urlpatterns)),
url(r'^directory/', displayDirectory, name = 'directory'),
url(r'^addfriend/', AddFriend, name="add friend")
)
@login_required
def displayDirectory (request, options=None):
"""displays a list of public profile pages"""
latestModUsers = KHPublicPage.objects.order_by('-lastModified')[:20]
template = loader.get_template('khusers/directory.html')
context = RequestContext(request, {'profiles': latestModUsers})
return HttpResponse(template.render(context))
directory.html
{% extends 'base.html' %}
{% block bodycontent %}
{% comment %}
Context expected:
request.user as user
a list of khusers.models.KHPublicPage as 'profiles'
aboutMe
displayName
bootstrap glyphicons:
use span class ="badge one of the following"
glyphicon glyphicon-ok
glyphicon glyphicon-remove
{% endcomment %}
<div class="container">
{% for person in profiles %}
<div class="panel panel-default">
<div class="panel-heading"> {{person.displayName}} </div>
<div class="panel-body">
<h4> {{person.aboutMe}} </h4>
<br />
<form action="/addfriend/" method="POST">
<input type="hidden" value ="{{person.pk}}" name="requestee">
<input type="text" name="note" placeholder="Let's be friends!">
<button type="submit" class="btn btn-default">Add friend</button>
</form>
</div>
</div>
{% endfor %}
</div>
{% endblock %}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="">
<meta name="author" content="">
{% load static from staticfiles %}
<!-- pre headcontent django tag -->
{% block headcontent %}
{% endblock %}
<!-- post headcontent django tag -->
<title>{% block title %} {% endblock %}
</title>
<link rel="stylesheet" type="text/css" href="{% static 'bootstrap/css/bootstrap.min.css' %}">
<link rel="stylesheet" type="text/css" href="{% static 'bootstrap/css/bootstrap-responsive.css' %}">
<link rel="stylesheet" type="text/css" href="{% static 'kh.css' %}">
</head>
<body>
<div class="navbar navbar-inverse navbar-fixed-top" 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="/">stuff</a>
<ul class="nav navbar-nav">
<li><a class="" action="/about/">About</a></li>
<li><a class="" action="/support/">Other Things</a></li>
</ul>
</div>
<div class="navbar-collapse collapse">
{% if user.is_authenticated %}
<a class="btn btn-default navbar-btn navbar-right btn-danger" style="margin-left: 10px;" href="/logout/">Logout </a>
<a class="btn btn-default navbar-btn navbar-right btn-info" style="margin-left: 10px;" href="/profile/" > {{user.username}}</a>
{% else %}
<a class="btn btn-default navbar-btn navbar-right khtopbarbuttons" style="margin-left: 10px;" href="/register/">Register</a>
<form class="navbar-form navbar-right khtopbarbuttons" role="form" action ='/login/' method='post'>
{% csrf_token %}
<div class="form-group" style="margin-right: 10px;">
<input type="text" placeholder="username" class="form-control" name="username" style="margin-left: 10px;">
</div>
<div class="form-group" style="margin-right: 10px;">
<input type="password" placeholder="Password" class="form-control" name="password" style="margin-left: 10px;">
</div>
<button type="submit" class="btn btn-success" style="margin-left: 10px;">Sign in</button>
</form>
{% endif %}
</div><!--/.navbar-collapse -->
</div>
</div>
<div class="container khcontainerpadded">
<!-- Pre bodycontent django tag -->
{% block bodycontent %}
?
{% endblock %}
<!-- post bodycontent django tag -->
</div>
<script src="{{ STATIC_URL }}jquery-1.10.2.js"></script>
<script src="{{ STATIC_URL }}bootstrap/js/bootstrap.js"></script>
</body>
</html>
{%extends'base.html%}
{%block bodycontent%}
{%comment%}
预期的背景:
request.user作为用户
khusers.models.KHPublicPage的列表为“profiles”
关于我
显示名称
引导图标:
使用span class=“标记以下各项之一”
字形图标字形图标ok
字形图标字形图标删除
{%endcomment%}
{配置文件%中的人员的百分比}
{{person.displayName}}
{{person.aboutMe}}
加朋友
{%endfor%}
{%endblock%}
base.html
{% extends 'base.html' %}
{% block bodycontent %}
{% comment %}
Context expected:
request.user as user
a list of khusers.models.KHPublicPage as 'profiles'
aboutMe
displayName
bootstrap glyphicons:
use span class ="badge one of the following"
glyphicon glyphicon-ok
glyphicon glyphicon-remove
{% endcomment %}
<div class="container">
{% for person in profiles %}
<div class="panel panel-default">
<div class="panel-heading"> {{person.displayName}} </div>
<div class="panel-body">
<h4> {{person.aboutMe}} </h4>
<br />
<form action="/addfriend/" method="POST">
<input type="hidden" value ="{{person.pk}}" name="requestee">
<input type="text" name="note" placeholder="Let's be friends!">
<button type="submit" class="btn btn-default">Add friend</button>
</form>
</div>
</div>
{% endfor %}
</div>
{% endblock %}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="">
<meta name="author" content="">
{% load static from staticfiles %}
<!-- pre headcontent django tag -->
{% block headcontent %}
{% endblock %}
<!-- post headcontent django tag -->
<title>{% block title %} {% endblock %}
</title>
<link rel="stylesheet" type="text/css" href="{% static 'bootstrap/css/bootstrap.min.css' %}">
<link rel="stylesheet" type="text/css" href="{% static 'bootstrap/css/bootstrap-responsive.css' %}">
<link rel="stylesheet" type="text/css" href="{% static 'kh.css' %}">
</head>
<body>
<div class="navbar navbar-inverse navbar-fixed-top" 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="/">stuff</a>
<ul class="nav navbar-nav">
<li><a class="" action="/about/">About</a></li>
<li><a class="" action="/support/">Other Things</a></li>
</ul>
</div>
<div class="navbar-collapse collapse">
{% if user.is_authenticated %}
<a class="btn btn-default navbar-btn navbar-right btn-danger" style="margin-left: 10px;" href="/logout/">Logout </a>
<a class="btn btn-default navbar-btn navbar-right btn-info" style="margin-left: 10px;" href="/profile/" > {{user.username}}</a>
{% else %}
<a class="btn btn-default navbar-btn navbar-right khtopbarbuttons" style="margin-left: 10px;" href="/register/">Register</a>
<form class="navbar-form navbar-right khtopbarbuttons" role="form" action ='/login/' method='post'>
{% csrf_token %}
<div class="form-group" style="margin-right: 10px;">
<input type="text" placeholder="username" class="form-control" name="username" style="margin-left: 10px;">
</div>
<div class="form-group" style="margin-right: 10px;">
<input type="password" placeholder="Password" class="form-control" name="password" style="margin-left: 10px;">
</div>
<button type="submit" class="btn btn-success" style="margin-left: 10px;">Sign in</button>
</form>
{% endif %}
</div><!--/.navbar-collapse -->
</div>
</div>
<div class="container khcontainerpadded">
<!-- Pre bodycontent django tag -->
{% block bodycontent %}
?
{% endblock %}
<!-- post bodycontent django tag -->
</div>
<script src="{{ STATIC_URL }}jquery-1.10.2.js"></script>
<script src="{{ STATIC_URL }}bootstrap/js/bootstrap.js"></script>
</body>
</html>
{%load static from staticfiles%}
{%block headcontent%}
{%endblock%}
{%block title%}{%endblock%}
切换导航
-
{%else%}
{%csrf_令牌%}
登录
{%endif%}
{%block bodycontent%}
?
{%endblock%}
这一定与Django“编译”和缓存模板的方式有关
我尝试了各种各样的东西,刷新了一切,雅达雅达雅达
最终修复它的是在文件系统中将directory2.html重命名为directory2.html,并调整视图代码以加载新文件
砰的一声,立刻就开始工作了
重新命名,仍在工作
我已经清除了我的浏览器缓存,所以我认为这是Django的一些内在黑魔法在作怪
哦,好吧,生活和学习什么的。我已经通过脚本标签关闭了
#
而不是:
#
因此标记从未关闭,页面的其余部分成为脚本标记的一部分
我用了hash,因为我不知道怎么回答。。。脚本标记没有显示在我发布的答案中首先:使用RequestContext,然后您将拥有用户,因为它是在中间件中设置的:)显示base.htmltoo@lalo-很好,现在导航栏保留了登录名,谢谢:-)以澄清
{%block bodycontent%}
和{%endblock%}中仍然没有任何呈现
标签