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。
我正在使用 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。