Heim  >  Artikel  >  Backend-Entwicklung  >  Woche Erste Schritte mit meiner Blog-App

Woche Erste Schritte mit meiner Blog-App

WBOY
WBOYOriginal
2024-07-19 15:32:17723Durchsuche

Week  Getting Started with My Blog App

Man sagt, dass man mehr Wissen erlangt, wenn man sein Lernen, seine Schwierigkeiten usw. dokumentiert. Deshalb habe ich ab diesem Tag, dem 15. Juli 2024, beschlossen, meine Fortschritte beim Erlernen von Django zu dokumentieren, indem ich eine Blog-App entwickle, ohne ChatGPT, Gemini und andere KI-Chatbots zu verwenden, die Code generieren können.

In den letzten Jahren habe ich mithilfe von ChatGPT Anwendungen erstellt, um Code für mich zu generieren, und das Ergebnis war großartig, ich konnte die Anwendungen erstellen. Allerdings verlasse ich mich zu sehr auf ChatGPT und verstehe die Konzepte der Programmierung nicht wirklich. Ich habe das Gefühl, dass ich bei der Entwicklung von Anwendungen nicht in der Lage bin, von Grund auf zu programmieren, und dass es ohne die Hilfe von ChatGPT nutzlos ist. Von diesem Punkt an werde ich mein Bestes tun, um die Dokumentation zum Erstellen dieser einfachen Blog-App zu lesen und zu verstehen.

Diese Woche habe ich meine Reise zum Erlernen von Django mit der Erstellung einer einfachen Blog-App begonnen. Mein Ziel ist es, jeden Schritt des Prozesses zu dokumentieren und meine Erfahrungen und Erkenntnisse aufzuzeigen.

Einrichten des Projekts

Schritt 1: Erstellen Sie eine virtuelle Umgebung
Zuerst habe ich eine virtuelle Umgebung erstellt, um Projektabhängigkeiten zu verwalten:

python -m venv <myenv> 
source myenv/bin/activate # On Windows use `myenv\Scripts\activate`

Schritt 2: Django installieren und neues Django-Projekt erstellen
Als nächstes habe ich Django installiert und ein neues Projekt namens blog_app
erstellt

pip install django
# Create new django project
django-admin startproject blog_app
cd blog_app

Benutzer-App erstellen

Schritt 1: Einrichten der App
Ich habe zuerst die Benutzerauthentifizierung
erstellt

# Either of the two
django-admin startapp user
python manage.py startapp user

Ich habe dann die neue App zur Liste INSTALLED_APPS in der Datei „settings.py“ hinzugefügt.

Schritt 2: Anmelde- und Anmeldeformulare für Benutzer erstellen
Ich habe die Datei „forms.py“ im App-Ordner des Benutzers erstellt. Ich verwende die in Django integrierten AuthenticationForm und UserCreationForm, indem ich sie an die benutzerdefinierte Klasse vererbe. Ich denke, auf diese Weise kann ich später die Benutzerinformationen anpassen.

# user/forms.py
from django.contrib.auth.forms import AuthenticationForm, UserCreationForm
from django.forms.widgets import PasswordInput, TextInput
from django.forms.fields import EmailField
from django import forms


class LoginForm(AuthenticationForm):
    username = forms.CharField(widget=TextInput())
    password = forms.CharField(widget=PasswordInput())


class SignUpForm(UserCreationForm):
    username = forms.CharField(max_length=150, required=True)
    email = forms.EmailField(required=True)
    password1 = forms.CharField(widget=forms.PasswordInput, required=True)
    password2 = forms.CharField(widget=forms.PasswordInput, required=True)

    def save(self, commit=True):
        user = super().save(commit=False)
        user.email = self.cleaned_data["email"]
        if commit:
            user.save()
        return user

Schritt 3: Ansichten.py erstellen
Anschließend habe ich eine Ansicht für die Startseite, Anmeldung, Abmeldung und Anmeldung erstellt. Ich werde in diesem Projekt nicht darauf eingehen, wie ich HTML, CSS und Javascript erstellt habe. Wenn Sie es überprüfen möchten, verlinke ich unten mein Github-Repository.

# user/views.py
from django.shortcuts import render, redirect
from django.contrib.auth.decorators import login_required
from django.contrib.auth import logout, authenticate, login
from .forms import *
from django.contrib.auth.models import auth

# I use the decorator `login_required` in order for the application to navigate to the login page if the user has not login or sign up yet.
@login_required
def homeView(request):
    return render(request, "home.html")

def loginView(request):
    '''
    First, I initialized my custom LoginForm then it will check the request of the user. 
    The user will then input it's username and password. Then it will check if the form is valid then it will get the user's input credential and it will authenticate it by using the built-in Django `authenticate` method. It will then check if the user correctly input it's credential and it will call the `login` method of Django and redirect the user to the homepage.
    '''
    form = LoginForm()
    if request.method == "POST":
       form = LoginForm(request, data=request.POST)
        if form.is_valid():
            username = request.POST.get("username")
            password = request.POST.get("password")
            user = authenticate(request, username=username, password=password)
            if user is not None:
                auth.login(request, user)
                return redirect("user:home")
    return render(request, "login.html", {"form": form})

def signupView(request):
    '''
    We will get the request from the user and check if the form is valid the we wills ave the user information in our SignUpForm
    '''
    if request.method == "POST":
        form = SignUpForm(request.POST)
        if form.is_valid():
            form.save()
            return redirect("user:login")
    else:
        form = SignUpForm()
    return render(request, "signup.html", {"form": form})

def logoutView(request):
    '''
    I use the Django built-in `logout` method to logut the user
    '''
    logout(request)
    return redirect("user:login")

Schritt 4: URLs hinzugefügt
Ich habe dann die URLs für den Benutzer hinzugefügt. Zuerst habe ich in blog_app/urls.py eine Startseite/leere URLs hinzugefügt.

# blog_app/urls.py
from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path("", include("user.urls", "user")),
    path("admin/", admin.site.urls),
]

Dann habe ich eine urls.py im Benutzerverzeichnis erstellt.

# user/urls.py
from django.urls import path, include
from .views import *

app_name = "user"

urlpatterns = [
    path("", homeView, name="home"),
    path("signup/", signupView, name="sign-up"),
    path("login/", loginView, name="login"),
    path("logout/", logoutView, name="logout"),
]

Ich habe eine Variable app_name erstellt und den Benutzer zugewiesen. Wie Sie oben in der Datei „views.py“ sehen können, verwende ich hier anstelle von „templates/html.py“ user:login. Ich habe gelernt, dass ich damit, wenn ich ein großes Projekt erstelle, leicht bestimmen kann, in welche App die Funktion der Ansichten ich umleite.

Herausforderungen und Erkenntnisse

Diese Woche stand ich vor einigen Herausforderungen, wie zum Beispiel:

  • Djangos Projektstruktur verstehen
  • Django-App erstellen und Formulare anpassen

Allerdings habe ich viel über die Grundlagen von Django und die Strukturierung eines Projekts gelernt. Mir ist auch bewusst, wie wichtig es ist, die Dokumentation gründlich zu lesen. Nun, ich kann immer noch nicht aufhören, ChatGPT zu verwenden, um Fragen zu dem Fehler zu stellen, auf den ich gestoßen bin, aber ich fordere es auf, damit ich keinen Beispielcode, sondern nur einfache Erklärungen bekomme.

Ziele für die nächste Woche

Ich habe vor:

  1. Richten Sie das Admin-Panel für die Blog-Beiträge ein
  2. Erstellen Sie Ansichten und Vorlagen zum Auflisten und Anzeigen von Blogbeiträgen
  3. Implementieren, damit der Benutzer einen Blog posten kann.

Seien Sie gespannt auf das Update nächste Woche!

Das obige ist der detaillierte Inhalt vonWoche Erste Schritte mit meiner Blog-App. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn