2017-07-02 12 views
2

wenn ich einreiche, ist dieser Fehler in die Luft gesprengt, wer kann helfen, willkommen, bro)!wie zu beheben TypeError: erwartete Zeichenfolge oder bytes-ähnliches Objekt?

stack frage mich füge mehr text hinzu, aber was soll ich hinzufügen? wenn alles erzählt wurde?

aber was hinzufügen? wenn alles erzählt wurde?

Der Fehler wird im Zusammenhang mit dem Datum

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) 
+0

Völlig nicht verwandt, während die Funktion 'Get' von QuerySet verwendet wird, löst es aus und Ausnahme, wenn die Abfrage null zurückgibt, anstatt 'None' zurückzugeben. –

Antwort

2

Die folgende Zeile Sie verursacht Probleme

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

Sie setzen key_expires als Tupel statt String. Ändern Sie es in

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

Entfernen Sie auch das Komma vom Ende der oben genannten Zeile.

+1

Es ist eigentlich das Komma am Ende, dass OP verwendet, aber scheint in Ihrer Antwort fehlt, das macht es in ein Tupel, nicht die Klammern. Vielleicht möchten Sie Ihre Antwort aktualisieren, um das zu berücksichtigen. Außerdem ist es jetzt auf ein "Datetime" -Objekt eingestellt, nicht auf eine Zeichenfolge. – knbk

+0

Ich dachte, Komma könnte ein Tippfehler beim Posten der Frage sein. Danke für den Hinweis auf @knbk –

Verwandte Themen