python - 如何修复“字典更新序列元素 #0 的长度为 104;需要 2”错误
问题描述
我想创建一个登录页面,当用户名和密码不正确时,会出现此错误“字典更新序列元素#0具有长度......是必需的”。如何纠正这个错误?
forms.py
class LoginForm(forms.Form):
username = forms.CharField(max_length=250, required=False)
password = forms.CharField(max_length=250, required=False)
views.py
class LoginView(View):
template_name = 'login/index.html'
form_class = LoginForm
def get(self, request):
form = self.form_class()
return render(request, self.template_name, {'form': form})
def post(self, request):
form = self.form_class(request.POST)
if form.is_valid():
username = form.cleaned_data['username']
password = form.cleaned_data['password']
user = authenticate(username=username, password=password)
if user is not None:
login(request, user)
next_var = request.GET.get('next')
# redirect to url in next var else return to login home page
return redirect('%s' % next_var) if next_var else redirect('%s' % settings.LOGIN_REDIRECT_URL)
return render(request, self.template_name, {'form': form})
When the fields are not filled there is this error "dictionary update sequence element #0 has length 104; 2 is required" that appears. but when I log in and I go back to the login page to log in without anything filled in I'm reported that the fields are not filled
这是我的 urls.py
from django.urls import path, include
from .views import login, signup, logout, settings, profile
urlpatterns = [
path('signup/', signup.SignupView.as_view(), name='signup'),
path('signin/', login.LoginView.as_view(), name='signin'),
path('logout/', logout.LogoutView.as_view(), name='logout'),
path('account/', settings.SettingView.as_view(), name='account'),
path('account/avatar/', settings.SetAvatarView.as_view(), name='set-avatar'),
path('account/name/', settings.SetNameView.as_view(), name='set-name'),
path('account/biography/', settings.SetBiographyView.as_view(), name='set-biography'),
path('account/birthday', settings.SetBirthdayView.as_view(), name='set-birthday'),
path('account/gender/', settings.SetGenderView.as_view(), name='set-gender'),
path('account/password/', settings.SetPasswordView.as_view(), name='set-password'),
path('account/dark-theme/', settings.SetDarkView.as_view(), name='set-dark-mode'),
path('account/color/', settings.SetColorView.as_view(), name='set-color'),
path('u/<int:id>/', profile.ProfileView.as_view(), name='profile'),
]
解决方案
thanks i have solved the problem by putting the code of context in comment.
from . models import AccountModel
def accounts(request):
if request.user.is_authenticated:
account = AccountModel.objects.get(user__id=request.user.id)
return {'account': account}
else:
return request
推荐阅读
- reactjs - 如何设置'react-select' multi的'defaultValue'?
- sql-server - Windows DTC 安全风险?
- vb.net - 尝试更新整数字段时,在 vb.net 中的条件表达式中出现数据类型不匹配
- azure - Azure Devops 发布管道导致服务连接错误
- python - 如何使用 sort 对哈希进行排序?
- python - Spyder 3.7 - 如何将值存储在函数的变量中
- python - 如何在团队中使用 VsCode Remote?
- openstack-swift - OVH 上的 Keystone v3
- c# - 尝试在 UWP/C# 中重新创建 Microsoft 的 .net 异步客户端/服务器套接字示例
- android - Android:AlertDialog 中 RadioButton 的自定义样式