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

Django Quiz - Code Review

VPS Starter Arubacloud
0 głosów
559 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 (349,960 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ź 205 wizyt
pytanie zadane 4 czerwca 2020 w Python przez szafran98 Początkujący (460 p.)
0 głosów
1 odpowiedź 117 wizyt
0 głosów
1 odpowiedź 873 wizyt
pytanie zadane 19 lipca 2019 w Python przez Czesc Początkujący (430 p.)

93,025 zapytań

141,990 odpowiedzi

321,292 komentarzy

62,371 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

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...