我正在构建一个网站(使用带有django的python),您可以在其中访问用户页面并向他们请求某些内容,但该功能仅适用于已登录的用户,而未登录的用户仍可以查看页面,但不是发送请求的表单。 最佳做法是什么:
在服务器上直接请求该视图时加载不同的模板
或
- 使用javascript来更改“请求表单”所在的位置'将在验证用户是否登录后? 感谢
答案 0 :(得分:3)
标准方法是在模板中使用简单的if语句。
{% if user.is_authenticated %}{% block form %}
{% else %} something else {% endif %}
要使用JS,您必须向服务器发出请求以查看用户是否已登录,因为quote someone else on SO"没有可靠的方法来执行此操作而不向服务器发出请求,因为会话可能已在服务器端过期。"
一般情况下,我建议在不需要服务器请求的情况下使用JS有条件地显示内容,除非您决定放弃标准的Django" MVT"类似于" MVVM"的范例在这种情况下,它都是JS。
答案 1 :(得分:1)
您可以使用相同的基本html页面,并根据用户是否登录有条件地呈现另一个模板。表单可以保存在该模板中。例如:
<body id="mySharedPage">
... Shared stuff ...
{% if user.is_authenticated %}
{% include "loggedInOnlyForm.html" %}
{% endif %}
</body
答案 2 :(得分:1)
如果用户已登录,您可以在模板中使用user.is_authenticated
仅渲染模板的给定部分。
{% if user.is_authenticated %}INSERT WHAT YOU WANT HERE{% endif %}