Mereka mengatakan bahawa apabila anda mendokumentasikan pembelajaran, perjuangan dan sebagainya, anda akan memperoleh lebih banyak pengetahuan. Jadi mulai hari ini, 15 Julai 2024, saya memutuskan untuk mendokumentasikan kemajuan saya untuk mempelajari Django dengan membangunkan Aplikasi Blog tanpa menggunakan ChatGPT, Gemini dan chatbot AI lain yang boleh menjana kod.
Beberapa tahun kebelakangan ini, saya telah mencipta aplikasi dengan bantuan ChatGPT untuk menjana kod untuk saya, dan hasilnya hebat, saya dapat membina aplikasi. namun, saya terlalu bergantung pada ChatGPT dan gagal memahami konsep pengaturcaraan dengan mendalam. Saya rasa saya tidak tahu cara membuat kod dari awal dan tidak berguna tanpa bantuan ChatGPT semasa membangunkan aplikasi. Jadi mulai dari saat ini, saya akan melakukan yang terbaik untuk membaca dan memahami dari dokumentasi untuk membina Aplikasi Blog Mudah ini.
Minggu ini, saya memulakan perjalanan saya mempelajari Django dengan mencipta apl blog yang mudah. Matlamat saya adalah untuk mendokumentasikan setiap langkah proses dan menunjukkan pengalaman dan pembelajaran saya.
Menyediakan Projek
Langkah 1: Cipta Persekitaran maya
Mula-mula, saya mencipta persekitaran maya untuk mengurus kebergantungan projek:
python -m venv <myenv> source myenv/bin/activate # On Windows use `myenv\Scripts\activate`
Langkah 2: Pasang Django dan Cipta Projek Django Baharu
Seterusnya, saya memasang django dan mencipta projek baharu yang dipanggil blog_app
pip install django # Create new django project django-admin startproject blog_app cd blog_app
Langkah 1: Menyediakan Apl
Saya mencipta dahulu, Pengesahan pengguna
# Either of the two django-admin startapp user python manage.py startapp user
Saya kemudian menambahkan apl baharu pada senarai INSTALLED_APPS dalam tetapan.py.
Langkah 2: Membuat borang Log Masuk dan Pendaftaran Pengguna
Saya mencipta fail forms.py dalam folder aplikasi pengguna. Saya menggunakan Django terbina dalam AuthenticationForm dan UserCreationForm dengan mewarisinya kepada kelas tersuai. Saya fikir dengan cara ini, saya boleh menyesuaikan maklumat pengguna kemudian.
# 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
Langkah 3: Cipta views.py
Saya kemudian mencipta pandangan untuk rumah, log masuk, log keluar dan pendaftaran. Saya tidak akan memasukkan cara saya mencipta html, css dan javascript dalam projek ini. Jika anda ingin menyemak saya akan memautkan repositori Github saya di bawah.
# 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")
Langkah 4: Menambah url
Saya kemudian menambah url untuk pengguna. Mula-mula saya menambah url rumah/kosong dalam blog_app/urls.py.
# 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), ]
Kemudian saya menambah mencipta urls.py dalam direktori pengguna.
# 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"), ]
Saya mencipta app_name pembolehubah dan menetapkan pengguna. Dalam hal ini, seperti yang anda boleh lihat dalam views.py di atas, bukannya templates/html.py saya menggunakan user:login. Saya mengetahui bahawa dengan ini, jika saya akan membuat projek berskala besar, saya boleh menentukan dengan mudah aplikasi apa fungsi paparan yang saya halakan.
Minggu ini, saya menghadapi beberapa cabaran, seperti:
Walau bagaimanapun, saya belajar banyak tentang asas Django dan cara menstruktur projek. Saya juga menyedari kepentingan membaca dokumentasi dengan teliti. Nah, saya masih tidak boleh berhenti menggunakan ChatGPT untuk bertanya soalan untuk ralat yang saya hadapi tetapi saya menggesanya supaya ia tidak memberi saya contoh kod dan bukan hanya penjelasan yang jelas.
Saya bercadang untuk:
Atas ialah kandungan terperinci Minggu Bermula dengan Apl Blog Saya. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!