Django 用户身份验证正常工作 EXCEPT 1 view/template

Django user authentication working properly EXCEPT 1 view/template

我正在使用 Django 1.11.5 并通过 Social Auth 登录和验证用户。

用户身份验证、登录和注销在我的 12/13 模板中按预期工作。我所有的模板都扩展了我的导航栏和页脚 base.html 模板。

在 'base.html' 中,我有以下导航栏代码:

{% if user.is_authenticated %}
<li class="nav-item">
<span class="nav-link" id="user-name">{{ request.user.username }}</span>
</li>
<li class="nav-item">
<a class="nav-link" href="{% url 'logout' %}">Logoff</a>
</li>
{% else %}
<li class="nav-item log-in-link">
<a class="btn btn-primary nav-link log-in" href="{% url 'social:begin' 'google-oauth2' %}"><span>Log-In <i class="fa fa-google-plus" aria-hidden="true"></i></span></a>
</li>
{% endif %}

现在,此导航栏代码在我的 12/13 模板中正常工作。它仅适用于用户未通过身份验证的 1 template/view/URL。

我尝试通过打印出模板中的用户名和信息进行调试,但出现错误,但看起来用户在通过其 URL 和视图访问该模板时正在注销。

我完全迷路了。

有人可以指出我可以 check/do 调试和定位此注销错误的根源吗?如果需要,我可以提供相关代码。

views.py代码

def details_request(request, request_data_ID):

data_request_object = DatasetRequest.objects.get(pk=request_data_ID)

user_ID = data_request_object.user.username

has_attributes = False
request_data_attrs = []
if len(data_request_object.attr_names) > 0:
    if len(data_request_object.attr_names['names']) > 0:
        has_attributes = True
        for idx, attr_names in enumerate(data_request_object.attr_names['names']):
            request_data_attrs.append([attr_names,
                                       data_request_object.attr_names['descriptions'][idx],
                                       data_request_object.attr_names['types'][idx]])
data_request_detail_template = {
    'dataset_request_title': data_request_object.dataset_title,
    'dataset_request_description': data_request_object.dataset_description,
    'dataset_votes': data_request_object.dataset_votes,
    'dataset_date': data_request_object.created_date.strftime("%Y-%m-%d"),
    'request_data_ID': request_data_ID,
    'has_attributes': has_attributes,
    'request_attrs': request_data_attrs,
    'user': user_ID,
    'is_completed': data_request_object.is_completed
}

data_comment_object = Comments.objects.filter(request_dataset_FK=data_request_object).order_by("-comment_votes")

if len(data_comment_object) > 0:
    comment_list = []
    for comment_object in data_comment_object:
        if comment_object.isComment:
            comment_list.append([comment_object.comment, comment_object.created_date.strftime("%Y-%m-%d"), comment_object.comment_votes, comment_object.pk, comment_object.user.username])
    data_request_detail_template['comments'] = comment_list

return render(request, "detail_requests.html", data_request_detail_template)

您正在指定:

user_ID = data_request_object.user.username

并将其放入 user 键下的上下文中。

在模板中,您有 {% if user.is_authenticated %},这意味着您正在尝试访问 user.username 的缺失属性 is_authenticated,该属性的计算结果始终为 False。