• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Django Quiz - Code Review

Object Storage Arubacloud
0 głosów
400 wizyt
pytanie zadane 18 sierpnia 2020 w Python przez Nieprofesjonalny Użytkownik (890 p.)

Cześć, uczę się frameworka Django od jakiegoś czasu i postanowiłem stworzyć jakąś własną aplikacje. Jest to strona internetowa z quizami, oferuje użytkownikom między innymi możliwość tworzenia własnych quizów, rozwiązywanie ich, komentowanie, dodałem również możliwość oceny przy pomocy łapek w górę lub w dół. Prosiłbym o ocenę kodu tzn. co mógłbym napisać lepiej, czy nie zastosowałem jakiś złych praktyk itd..

Link do repozytorium:

https://github.com/CodingForFuture/django_quiz

1 odpowiedź

+1 głos
odpowiedź 18 sierpnia 2020 przez adrian17 Ekspert (344,860 p.)
wybrane 20 sierpnia 2020 przez Nieprofesjonalny
 
Najlepsza

Pomijając brak testów i mniejsze lub większe pierdoły (np osobiście bym zamienił te widoki z funkcji na widoki klasowe, powinno być trochę mniej kodu), to najbardziej w oczy się rzuca słabe używanie ORMa.

    answer_2 = question.answers.filter(is_correct=False).all()[0]
    answer_3 = question.answers.filter(is_correct=False).all()[1]
    answer_4 = question.answers.filter(is_correct=False).all()[2]
            for j in range(4):
                choices.append([
                    question.answers.all()[j], question.answers.all()[j].is_correct,
                    int(question.answers.all()[j].id) == int(data.get(f'answer{question.id}'))])
    if request.user in quiz.likes.all():
        quiz.likes.remove(request.user)
    else:
        if request.user in quiz.dislikes.all():
    question = get_object_or_404(Question, pk=pk)
    if request.user != question.quiz.author:

Robisz tutaj kilka razy więcej zapytań SQLowych niż jest potrzeba. Polecam poczytać o funkcjonalności querysetów, w szczególności select_related, prefetch_related.

Na przykład w tym ostatnim samo `question.quiz` wygeneruje nowe zapytanie bazowanowe wyciągające quiz tego pytania. To jest podręcznikowe miejsce na użycie `select_related`.

komentarz 19 sierpnia 2020 przez Nieprofesjonalny Użytkownik (890 p.)
Dzięki za odpowiedź. Poczytałem trochę na temat select_related i prefetch_related i spróbowałem wprowadzić zmiany do mojego kodu, są one już dostępne na githubie, więc byłbym wdzięczny jeśli w wolnej chwili sprawdziłbyś, czy wprowadzone zmiany są poprawne

Podobne pytania

0 głosów
1 odpowiedź 182 wizyt
pytanie zadane 4 czerwca 2020 w Python przez szafran98 Początkujący (460 p.)
0 głosów
1 odpowiedź 64 wizyt
0 głosów
1 odpowiedź 784 wizyt
pytanie zadane 19 lipca 2019 w Python przez Czesc Początkujący (430 p.)

92,575 zapytań

141,424 odpowiedzi

319,649 komentarzy

61,960 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...