ChangeEmailView() получила неожиданный аргумент ключевого слова 'token'

Я пытаюсь сделать url со значением из views в нем

    path('settings/email/changeemail/<str:token>', views.ChangeEmailView , name="changeemail"),

но эта ошибка появляется, если я захожу на страницу:

Internal Server Error: /settings/email/changeemail/0fdb9ef1-ce86-482e-a8ef-3fc202438ba9
Traceback (most recent call last):
 File "C:\Users\Finn\AppData\Local\Programs\Python\Python39\lib\site-packages\django\core\handlers\exception.py", line 47, in inner
   response = get_response(request)
 File "C:\Users\Finn\AppData\Local\Programs\Python\Python39\lib\site-packages\django\core\handlers\base.py", line 181, in _get_response
   response = wrapped_callback(request, *callback_args, **callback_kwargs)
 File "C:\Users\Finn\AppData\Local\Programs\Python\Python39\lib\site-packages\django\contrib\auth\decorators.py", line 21, in _wrapped_view
   return view_func(request, *args, **kwargs)
TypeError: ChangeEmailView() got an unexpected keyword argument 'token'

вот мой views.py

@login_required(login_url='home:login')
def ChangeEmailView(request):
        if request.method == 'POST':
            objects = User.objects.get(email = request.user.email)
            form = EmailChangingForm(request.POST, instance=objects)
            packet = get_object_or_404(TempUrl, user=request.user)
            token = packet.uid
            if form.is_valid():
                form.save()
                
            return redirect('home:profilesettings')
            
        else:
            objects = User.objects.get(email = request.user.email)
            form = EmailChangingForm(request.POST, instance=objects)
            packet = get_object_or_404(TempUrl, user=request.user)
            token = packet.uid
        context = {'form': form, 'token': token}
        return render(request, 'home/email_settings.html', context)

в конце я хочу иметь уникальный url, с которого токен сохраняется в db

heres the other view where the uuid is generated and put to the db

def load_url(request):
   token = uuid.uuid4()
   objects = TempUrl.objects.update_or_create(user = request.user, uid=token, used=False)
   print("Das ist der Token:" + str(token))

   context = {'token': token}



   return render(request, 'home/changeemail_pre.html', context)

Вы должны добавить параметр к представлению, а также параметр представления.

def changeEmailView(request, token):
    ...

Поэтому он говорит о неожиданном ключевом слове. Потому что ключевое слово есть, но представление его не ожидает.

Вернуться на верх