首页 > 解决方案 > 如何修复“字典更新序列元素 #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'),
]

标签: pythondjango

解决方案


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

推荐阅读