2017-06-29 6 views
0

Code:Python3 immer Listenelement Index leer Fehler zurückgegeben

  other_users=User.objects.filter(logged_in=False) 

      for other_user in other_users: 
       other_posts=Post.objects.filter(author=other_user) 
       print('[!] Collecting other_posts from other_user => {} [{}] [!]'.format(other_user,other_posts)) 
       try: 
        for other_post in other_posts: 
         print('[=] other_post: {}'.format(other_post)) 
         if other_post.likes==0: 
          print('[=] other_post with 0 likes: {}'.format(other_post)) 
          for like in range(max_likes_per_user): 
           rand_post=random.choice(other_posts) 
           print('[+] Random post => {} : TYPE[{}]'.format(rand_post,type(rand_post))) 
           post_index=other_posts.index(rand_post) 
           print('[!] Post index: {}'.format(post_index)) 
           other_posts.pop(post_index) 
           print('[+] Liking {} POST'.format(rand_post)) 
           rand_post.likes+=1 
           rand_post.save() 
           print('[!] Saving like [!]') 
       except Exception as e: 
        print('[-] Error: [-]\n\n'.format(e)) 
        done=True 

Ich versuche herauszufinden, wo das Problem für die letzte 1h ist und es immer noch nicht finden können.

Ich versuche, den Index einer zufälligen Auswahl aus einer Liste zu bekommen, aber wann immer ich zu diesem Teil komme, wird das Programm mit einem leeren Fehler beendet.

Der Teil:

post_index=other_posts.index(rand_post) 
print('[!] Post index: {}'.format(post_index)) 

und alles danach ist nichts zurückkehrt, und direkt gegenüber Exception Überspringen jedoch e Variable ist immer leer und ich bin nicht die Fehlerausgabe zu bekommen.

Ich würde gerne wissen, warum die post_index-Variable keine Daten erhält und warum es zum Ausnahmeteil überspringt. Was scheint im Code schlecht zu sein?

Dies sind die Ausgänge I erhalten:

[!] Collecting other_posts from other_user => Robot Tyler 1 [<QuerySet [<Post: Robot Tyler 1 - Title 1>, <Post: Robot Tyler 1 - Title 2>, <Post: Robot Tyler 1 - Title 3>, <Post: Robot Tyler 1 - Title 4>]>] [!] 
[=] other_post: Robot Tyler 1 - Title 1 
[=] other_post with 0 likes: Robot Tyler 1 - Title 1 
[+] Random post => Robot Tyler 1 - Title 4 : TYPE[<class 'person.models.Post'>] 
[-] Error: [-] 


[!] Collecting other_posts from other_user => Robot Tyler 2 [<QuerySet [<Post: Robot Tyler 2 - Title 1>, <Post: Robot Tyler 2 - Title 2>, <Post: Robot Tyler 2 - Title 3>]>] [!] 
[=] other_post: Robot Tyler 2 - Title 1 
[=] other_post with 0 likes: Robot Tyler 2 - Title 1 
[+] Random post => Robot Tyler 2 - Title 1 : TYPE[<class 'person.models.Post'>] 
[-] Error: [-] 

Jeder konnte mir sagen, wo der Fehler ist?

+0

dies ist nicht der richtige Weg Frage zu stellen ... fragen sie klar –

+0

, welcher Teil des Codes hat Probleme? –

+0

Bearbeitet. Es tut mir Leid. –

Antwort

0

Aus irgendeinem Grund other_posts Variable war QuerySet und keine Liste. Also habe ich es in eine list(other_posts) umgewandelt. Wenn jemand den Grund dafür zu verstehen scheint, dass other_posts als QuerySet adressiert wird, erklären Sie bitte in den Anmerkungen.

Das ist also, wie der Code wie jetzt aussieht:

other_users=User.objects.filter(logged_in=False) 

for other_user in other_users: 
    other_posts=Post.objects.filter(author=other_user) 
    print('[!] Collecting other_posts from other_user => {} [{}] [!]'.format(other_user,other_posts)) 
    try: 
     for other_post in other_posts: 
      print('[=] other_post: {}'.format(other_post)) 
      if other_post.likes==0: 
       print('[=] other_post with 0 likes: {}'.format(other_post)) 
       for like in range(max_likes_per_user): 
        rand_post=random.choice(other_posts) 
        print('[+] Random post => {} : TYPE[{}]'.format(rand_post,type(rand_post))) 
        post_index=list(other_posts).index(rand_post) 
        print('[!] Post index: {}'.format(post_index)) 
        list(other_posts).pop(post_index) 
        print('[+] Liking {} POST'.format(rand_post)) 
        rand_post.likes+=1 
        rand_post.save() 
        print('[!] Saving like [!]') 
    except Exception as e: 
     print(e) 
     done=True