InvictusManeoBart
InvictusManeoBart

Reputation: 383

how to fix TypeError: expected string or bytes-like object?

when i submit, this error is blow up, who can help, welcome, bro)!

stack ask me add more text, but what to add? if everything was told?

but what to add? if everything was told?

The error is related to the date

fulltraceback

> Internal Server Error: /accounts/reset_activation_key/ Traceback (most
> recent call last):   File
> "C:\Users\P.A.N.D.E.M.I.C\Desktop\td11\lib\site-packages\django\core\handlers\exception.py",
> line 41, in inner
>     response = get_response(request)   File "C:\Users\P.A.N.D.E.M.I.C\Desktop\td11\lib\site-packages\django\core\handlers\base.py",
> line 187, in _get_response
>     response = self.process_exception_by_middleware(e, request)   File "C:\Users\P.A.N.D.E.M.I.C\Desktop\td11\lib\site-packages\django\core\handlers\base.py",
> line 185, in _get_response
>     response = wrapped_callback(request, *callback_args, **callback_kwargs)   File "C:\Users\P.A.N.D.E.M.I.C\Desktop\td11\newstudio\accounts\views.py",
> line 140, in reset_activation_key
>     profile.save()   File "C:\Users\P.A.N.D.E.M.I.C\Desktop\td11\lib\site-packages\django\db\models\base.py",
> line 806, in save
>     force_update=force_update, update_fields=update_fields)   File "C:\Users\P.A.N.D.E.M.I.C\Desktop\td11\lib\site-packages\django\db\models\base.py",
> line 836, in save_base
>     updated = self._save_table(raw, cls, force_insert, force_update, using, update_fields)   File
> "C:\Users\P.A.N.D.E.M.I.C\Desktop\td11\lib\site-packages\django\db\models\base.py",
> line 903, in _save_table
>     forced_update)   File "C:\Users\P.A.N.D.E.M.I.C\Desktop\td11\lib\site-packages\django\db\models\base.py",
> line 953, in _do_update
>     return filtered._update(values) > 0   File "C:\Users\P.A.N.D.E.M.I.C\Desktop\td11\lib\site-packages\django\db\models\query.py",
> line 664, in _update
>     return query.get_compiler(self.db).execute_sql(CURSOR)   File "C:\Users\P.A.N.D.E.M.I.C\Desktop\td11\lib\site-packages\django\db\models\sql\compiler.py",
> line 1191, in execute_sql
>     cursor = super(SQLUpdateCompiler, self).execute_sql(result_type)   File
> "C:\Users\P.A.N.D.E.M.I.C\Desktop\td11\lib\site-packages\django\db\models\sql\compiler.py",
> line 863, in execute_sql
>     sql, params = self.as_sql()   File "C:\Users\P.A.N.D.E.M.I.C\Desktop\td11\lib\site-packages\django\db\models\sql\compiler.py",
> line 1157, in as_sql
>     val = field.get_db_prep_save(val, connection=self.connection)   File
> "C:\Users\P.A.N.D.E.M.I.C\Desktop\td11\lib\site-packages\django\db\models\fields\__init__.py",
> line 770, in get_db_prep_save
>     prepared=False)   File "C:\Users\P.A.N.D.E.M.I.C\Desktop\td11\lib\site-packages\django\db\models\fields\__init__.py",
> line 1459, in get_db_prep_value
>     value = self.get_prep_value(value)   File "C:\Users\P.A.N.D.E.M.I.C\Desktop\td11\lib\site-packages\django\db\models\fields\__init__.py",
> line 1438, in get_prep_value
>     value = super(DateTimeField, self).get_prep_value(value)   File "C:\Users\P.A.N.D.E.M.I.C\Desktop\td11\lib\site-packages\django\db\models\fields\__init__.py",
> line 1296, in get_prep_value
>     return self.to_python(value)   File "C:\Users\P.A.N.D.E.M.I.C\Desktop\td11\lib\site-packages\django\db\models\fields\__init__.py",
> line 1399, in to_python
>     parsed = parse_datetime(value)   File "C:\Users\P.A.N.D.E.M.I.C\Desktop\td11\lib\site-packages\django\utils\dateparse.py",
> line 94, in parse_datetime
>     match = datetime_re.match(value) TypeError: expected string or bytes-like object

views.py

def reset_activation_key(request):
    if request.user.is_authenticated():
        return redirect('/accounts/logout')
    if request.method   == "POST":
        form                    = ResetActivatioKey(request.POST or None)
        if form.is_valid():
            email               = form.cleaned_data['email']
            user                = User.objects.get(email=email)
            profile             = UserProfile.objects.get(user=user)
            if profile.is_active:
                return redirect('/accounts/login')
            if profile is not None and profile.is_active == False :
                username        = user.username
                get_secret_key  = activation_key_generator(username)
                print(get_secret_key)
                profile.activation_key = get_secret_key
                profile.key_expires = (timezone.now() + datetime.timedelta(days=2)),
                profile.save()

                send_some_email(email, username, get_secret_key)
                return redirect('/account/register/')
    form = ResetActivatioKey()
    context = {"form":form}
    return render(request, 'accounts/registration/reset_activation_key.html', context)

Upvotes: 1

Views: 8605

Answers (1)

Arpit Solanki
Arpit Solanki

Reputation: 9931

The line below is causing you trouble

profile.key_expires = (timezone.now() + datetime.timedelta(days=2)),

You are setting key_expires as tuple instead of string. Change it to

profile.key_expires = timezone.now() + datetime.timedelta(days=2)

Also remove the comma from the end of the line mentioned above.

Upvotes: 5

Related Questions