cle*_*ula 0 django exception-handling try-catch
这部分代码代表我网页的索引,例如:127.0.0.1:8000/
def IndexView(request):
try:
profile = request.user.get_profile()
except User.DoesNotExist:
return render_to_response('index.html',
{'request': request,},
context_instance=RequestContext(request))
return render_to_response('index.html',
{'request': request, 'profile' : profile},
context_instance=RequestContext(request))
Run Code Online (Sandbox Code Playgroud)
为什么我在调试时仍然收到此错误?
AttributeError at / 'AnonymousUser' 对象没有属性 'get_profile'
提前致谢
您需要添加此检查:
from django.shortcuts import render
def index_view(request):
if request.user.is_authenticated():
profile = request.user.get_profile()
return render(request,'index.html',{'profile': profile})
else:
return redirect('login/')
Run Code Online (Sandbox Code Playgroud)
或者,您可以使用内置装饰器来确保您的视图仅被登录用户调用:
from django.contrib.auth.decorators import login_required
from django.shortcuts import render
@login_required
def index_view(request):
profile = request.user.get_profile()
return render(request,'index.html',{'profile': profile})
Run Code Online (Sandbox Code Playgroud)
如果您使用login_required
装饰器,您需要确保您有一个LOGIN_URL
指向处理站点登录表单的视图的设置。默认情况下这是/accounts/login/
我将方法名称更改为小写,因为 CamelCase 通常用于 Python 中的类。此外,您不需要两个 return 语句,因为您正在呈现相同的模板。相反,在您的index.html
模板中,您可以执行以下操作:
{% if profile %}
You have a profile!
{% else %}
You don't
{% endif %}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6051 次 |
最近记录: |