Python ';str';对象没有属性';获取';当重定向到登录页面时
我有一个链接,当我点击它,我需要重定向到登录页面,如果用户没有登录。这是我的链接:Python ';str';对象没有属性';获取';当重定向到登录页面时,python,django,Python,Django,我有一个链接,当我点击它,我需要重定向到登录页面,如果用户没有登录。这是我的链接: <a href="{{ request.scheme }}://{{ request.get_host }}{% url 'join_miz_email' id=meeting.pk email=email %}" 这是登录功能: @login_required def join_miz(request,id,email=None): print(email) if r
<a href="{{ request.scheme }}://{{ request.get_host }}{% url 'join_miz_email' id=meeting.pk email=email %}"
这是登录功能:
@login_required
def join_miz(request,id,email=None):
print(email)
if request.user.email == email:
logout(request)
return('register_login_landing')
else:
meeting = get_object_or_404(Meeting,pk=id)
try :
meeting_member= get_object_or_404(MeetingMember,meeting=meeting)
return redirect('index')
except:
member = MeetingMember(meeting = meeting, user = request.user,status="A")
member.save()
return redirect(reverse('meeting-info',args=(meeting.pk,)))
def register_login_landing(request):
if request.user.is_authenticated:
return redirect('index')
return render(request, "../templates/templates_v2/register-login-landing.html",context={'next':request.GET.get('next')})
并以html格式输入:
<input type="hidden" name="next" value="{{next}}"/>
这是回溯:
Traceback Switch to copy-and-paste view
/home/admin1/envs/myvenv/lib/python3.8/site-packages/django/core/handlers/exception.py, line 47, in inner
response = get_response(request) …
▶ Local vars
/home/admin1/envs/myvenv/lib/python3.8/site-packages/django/utils/deprecation.py, line 116, in __call__
response = self.process_response(request, response) …
▶ Local vars
/home/admin1/envs/myvenv/lib/python3.8/site-packages/django/middleware/clickjacking.py, line 26, in process_response
if response.get('X-Frame-Options') is not None: …
▶ Local vars
我该怎么办?您在查看函数中返回了字符串而不是响应对象。更多信息 似乎您可能想通过
注册\u登录\u登录
返回重定向。
视图需要返回响应对象或重定向
大概是这样的:
return redirect(reverse('register_login_landing',args=(meeting.pk,)))
而不是:
return('register_login_landing')
欢呼声也会显示回溯,而不仅仅是错误消息。你的问题,包括追溯那里;作为评论,它是不可读的。
@login_required
def join_miz(request,id,email=None):
print(email)
if request.user.email == email:
logout(request)
return('register_login_landing')
return redirect(reverse('register_login_landing',args=(meeting.pk,)))
return('register_login_landing')