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

Mikroblog w Django, proszę o code review

Aruba Cloud PRO i VPS, Openstack, VMWare, MS Hyper-V
0 głosów
148 wizyt
pytanie zadane 4 czerwca 2020 w Python przez szafran98 Początkujący (460 p.)

Hej, od jakiegoś czasu uczę się Django i postanowiłem, że napiszę aplikację do mikroblogowania. Mam już w miarę działającą wersję, ale jest to w zasadzie mój pierwszy projekt w Django, nie licząc przepisywania czegoś z tutoriala, więc bardzo serdecznie prosiłbym, żeby ktoś zaznajomiony z tematem rzucił okiem, czy jest to jakoś akceptowalnie zrobione, a nie przykładowo łamię wzorzec projektowy. Każdą uwagę przyjmę oczywiście z otwartymi rękoma, jeżeli jest potrzebna wersja live to mogę postawić i wrzucić link. Kod: https://github.com/szafran98/mikroblog_django

1 odpowiedź

+1 głos
odpowiedź 4 czerwca 2020 przez adrian17 Ekspert (330,920 p.)
wybrane 4 czerwca 2020 przez szafran98
 
Najlepsza

Kilka losowych wybiórczych spostrzeżeń:

- masz trochę duplikacji roboty związanej z modelami. Na przykład:

Post.update_post_content(id, new_content_post)

Ale wyżej masz już zmienną edited_post, to czemu nie po prostu nie zmodyfikować tego obiektu?

Podobnie:

user_comments_count = Comment.get_user_comment_count(username)

W środku robisz filtrowanie z joinem, żeby przefiltrować po username. Ale znowu, po co, skoro masz już pod ręką obiekt z tym userem?

Mam wrażenie że jest tego więcej, ale nie będę więcej wymieniał.

Dalej:

def delete_post(request, id):
    post_to_delete = Post.objects.get(id=id)
    if request.method == 'DELETE':

Jest do tego dekorator `require_http_methods`.

        let timeToChange = element.innerHTML;
        let toNumber = parseInt(timeToChange);
        element.innerHTML = time2TimeAgo(toNumber);

Jeśli nie musisz koniecznie operować na surowym HTMLu, unikaj innerHTML. textContent powinien tutaj wystarczyć, nie?

style="margin: auto; max-width: 600px; margin-bottom: 30px;

Inline style są be ;)

Ogólna uwaga:

def edit_post(request, id):
    edited_post = Post.objects.get(id=id)
    post_form = AddPostForm(request.POST or None, instance=request.user)
    if request.POST:

Poczytaj o "klasowych" widokach w Django. Pozwalają uniknąć sporo boilerplate'u takiego jak powyższe klasyczne tworzenia Forma i `if request.POST`.

komentarz 4 czerwca 2020 przez szafran98 Początkujący (460 p.)
Dzięki serdeczne, teraz sprawdzam i faktycznie celne uwagi, kłaniam się.

Podobne pytania

0 głosów
1 odpowiedź 206 wizyt
pytanie zadane 18 sierpnia 2020 w Python przez Nieprofesjonalny Użytkownik (890 p.)
0 głosów
1 odpowiedź 197 wizyt
pytanie zadane 21 lipca 2022 w JavaScript przez mj23 Nowicjusz (150 p.)
+1 głos
2 odpowiedzi 161 wizyt
pytanie zadane 7 kwietnia 2021 w Python przez Puszkin Nowicjusz (170 p.)

90,817 zapytań

139,493 odpowiedzi

313,550 komentarzy

60,311 pasjonatów

Motyw:

Akcja Pajacyk

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

Sklep oferujący ćwiczenia JavaScript, PHP, rozmowy rekrutacyjne dla programistów i inne materiały

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...