Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Minggu Bermula dengan Apl Blog Saya

Minggu Bermula dengan Apl Blog Saya

WBOY
WBOYasal
2024-07-19 15:32:17748semak imbas

Week  Getting Started with My Blog App

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

Cipta Apl Pengguna

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.

Cabaran dan Pembelajaran

Minggu ini, saya menghadapi beberapa cabaran, seperti:

  • Memahami struktur projek Django
  • Mencipta apl Django dan menyesuaikan borang

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.

Matlamat Minggu Depan

Saya bercadang untuk:

  1. Sediakan panel pentadbir untuk siaran Blog
  2. Buat paparan dan templat untuk menyenaraikan dan memaparkan catatan blog
  3. Laksanakan supaya pengguna boleh menyiarkan blog.

Nantikan kemas kini minggu hadapan!

Atas ialah kandungan terperinci Minggu Bermula dengan Apl Blog Saya. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn