【发布时间】:2019-05-27 21:14:28
【问题描述】:
我正在创建一个用户可以上传文档的网站。如果用户已注销,他可以查看其他人的文档但不能下载它 如果用户已登录,他可以从 pdf 查看器的工具栏中下载文档
即使我注销 request.user.is_authenticated 在主页中为假,但在其他页面中为真。所以下载按钮不会隐藏,也不会显示登录按钮。
我尝试过使用 user.is_authenticated 但它一直返回 true
if else 条件在索引页中可以正常工作,但在 doc_detail.html 中则不行
urls.py
re_path(r'^all_files/(?P<doc_id>[0-9]+)/$',views.doc_detail,name = 'doc_detail'),
path('login/',auth_views.LoginView.as_view(template_name='homework/login.html'),name = 'login'),
views.py
def doc_detail(request,doc_id):
template = loader.get_template('homework/doc_detail.html')
doc = get_object_or_404(Document, pk = doc_id)
context = {
'doc':doc
}
return HttpResponse(template.render(context,request))
doc_detail.html
{{ doc.user.username }}
{{ doc.title }}
{{ doc.doc_type }} <br>
{% if request.user.is_authenticated %}
<iframe src="{{ doc.document.url }}#toolbar=1&navpanes=0&scrollbar=1" type="application/pdf" width = "80%" height = "600px" />
{% else %}
<iframe src="{{ doc.document.url }}#toolbar=0&navpanes=0&scrollbar=0" type="application/pdf" width = "80%" height = "600px" />
<a href=" url 'homework:login'">login</a>
{% endif %}
索引页面
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
This is the homework page implement upload-routine explore-routine here
{% if request.user.is_authenticated %}
the user is {{ request.user.email }} {{ request.user.profile.institution }}
{% else %}
user not logged in
{% endif %}
{% if request.user.is_authenticated %}
<a href="{% url 'homework:logout' %}">logout</a>
<a href="{% url 'homework:update' %}">update</a>
<a href="{% url 'homework:upload' %}">upload</a>
<a href="{% url 'homework:my_uploads' %}">my uploads</a><br>
{% else %}
<a href="{% url 'homework:login' %}">login</a><br>
{% endif %}
<a href="{% url 'homework:all_files' %}">all files</a>
</body>
</html>
【问题讨论】:
-
但是我的代码使用的是 render 而不是 render_to_response @ivan 并且您提供的文档已经过尝试,并且它在主页中为我工作我将在问题中包含主页的模板跨度>
-
请再看一下文档并将示例代码与您的进行比较。
标签: python django authentication