배움과 어려움 등을 기록하면 지식을 더 많이 얻을 수 있다고 합니다. 그래서 2024년 7월 15일 오늘부터 코드를 생성할 수 있는 ChatGPT, Gemini 및 기타 AI 챗봇을 사용하지 않고 블로그 앱을 개발하여 Django 학습 진행 상황을 문서화하기로 결정했습니다.
지난 몇 년 동안 저는 코드 생성을 위해 ChatGPT의 도움으로 애플리케이션을 만들어 왔고 결과는 좋았습니다. 애플리케이션을 구축할 수 있었습니다. 그러나 나는 ChatGPT에 너무 많이 의존하고 프로그래밍의 개념을 깊이 이해하지 못합니다. 애플리케이션을 개발할 때 ChatGPT의 도움 없이는 처음부터 코딩하는 방법을 모르고 쓸모가 없다고 느낍니다. 그래서 지금부터 이 Simple Blog App을 만들기 위해 최선을 다해 문서를 읽고 이해하겠습니다.
이번 주에는 간단한 블로그 앱을 만들어 Django를 배우는 여정을 시작했습니다. 제 목표는 프로세스의 각 단계를 문서화하고 제가 경험하고 배운 것을 보여주는 것입니다.
프로젝트 설정
1단계: 가상 환경 만들기
먼저 프로젝트 종속성을 관리하기 위해 가상 환경을 만들었습니다.
python -m venv <myenv> source myenv/bin/activate # On Windows use `myenv\Scripts\activate`
2단계: Django 설치 및 새 Django 프로젝트 생성
다음으로 django를 설치하고 blog_app이라는 새 프로젝트를 생성합니다
pip install django # Create new django project django-admin startproject blog_app cd blog_app
1단계: 앱 설정
먼저, 사용자 인증을 만들었습니다
# Either of the two django-admin startapp user python manage.py startapp user
그런 다음 settings.py의 INSTALLED_APPS 목록에 새 앱을 추가했습니다.
2단계: 사용자 로그인 및 가입 양식 생성
사용자 앱 폴더에 Forms.py 파일을 만들었습니다. 저는 Django에 내장된 AuthenticationForm과 UserCreationForm을 사용자 정의 클래스에 상속하여 활용합니다. 이렇게 하면 나중에 사용자 정보를 맞춤 설정할 수 있을 것 같아요.
# 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
3단계: views.py 생성
그런 다음 홈, 로그인, 로그아웃 및 가입에 대한 뷰를 만들었습니다. 이 프로젝트에서는 html, css, javascript를 어떻게 생성했는지는 포함하지 않겠습니다. 확인하고 싶으시다면 아래 Github 저장소를 링크해드리겠습니다.
# 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")
4단계: URL 추가
그런 다음 사용자의 URL을 추가했습니다. 먼저 blog_app/urls.py에 home/empty URL을 추가했습니다.
# 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), ]
그런 다음 사용자 디렉토리에 urls.py를 생성했습니다.
# 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"), ]
app_name 변수를 만들고 사용자를 할당했습니다. 여기에서는 위의 views.py에서 볼 수 있듯이 template/html.py 대신 user:login을 사용합니다. 이를 통해 대규모 프로젝트를 만들 경우 어떤 앱에 뷰 기능을 리디렉션할지 쉽게 결정할 수 있다는 것을 배웠습니다.
이번 주에는 다음과 같은 몇 가지 문제에 직면했습니다.
하지만 Django의 기본과 프로젝트 구성 방법에 대해 많은 것을 배웠습니다. 또한 설명서를 철저하게 읽는 것이 중요하다는 것을 깨달았습니다. 글쎄요, 제가 만난 오류에 대해 질문하기 위해 여전히 ChatGPT를 사용하는 것을 멈출 수는 없지만 단순한 설명보다는 예제 코드를 제공하지 않도록 메시지를 표시합니다.
다음을 계획하고 있습니다.
위 내용은 내 블로그 앱 시작하기 주간의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!