我有一个django网页,我想向每个用户显示,无论他是否登录。
鉴于django项目,我添加了装饰器@login_required
@login_required(login_url='/login')
def home(request):
current_user = str(request.user)
data = {}
data['current_user'] = current_user
使用户重定向到登录页面。
但是因为我希望用户查看数据,即使他没有登录,如果他想登录,也可以在同一页面上打开弹出窗口(型号)登录。
所以我删除了@login_required指令。但是当用户尝试登录时失败并出现以下错误:
username = request.POST['username']
File "/home/jay/jay/at_jay/local/lib/python2.7/site-packages/django/utils/datastructures.py", line 85, in __getitem__
raise MultiValueDictKeyError(repr(key))
MultiValueDictKeyError: "'username'"
任何帮助将不胜感激。
完整追溯:
inside login block Internal Server Error: /login/ Traceback (most recent call last):
File "site-packages/django/core/handlers/base.py", line 149, in get_response
response = self.process_exception_by_middleware(e, request)
File "site-packages/django/core/handlers/base.py", line 147, in get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/home/jay/jay/AutoTriage/dashboard/views.py", line 160, in login_user
username = request.POST['username']
File "site-packages/django/utils/datastructures.py", line 85, in __getitem__
raise MultiValueDictKeyError(repr(key)) MultiValueDictKeyError: "'username'" [16/Mar/2016 13:58:46] "POST /login/ HTTP/1.1" 500 67952
答案 0 :(得分:1)
您需要能够同时处理已登录和未登录的用户。您可以使用Django的AnonymousUser
类和request.user.is_authenticated
有关示例,请参阅here。
答案 1 :(得分:1)
Django附带built in authentication views。我建议你使用它们,而不是写自己的观点来登录。
如果您不使用它们,最好使用forms,而不是直接从request.POST
获取数据。
如果您坚持从if 'username' in request.POST:
username = request.POST['username']
else:
# do something else
获取数据,则需要在密钥不存在时处理该情况。您可以通过检查密钥是否存在来执行此操作,
get()
或使用username = request.POST.get('username', 'default')
方法。
MTLRenderPipelineState