[Django] Django 기초 프로젝트 - MyFirstSNS

Yungsang Hwang·2022년 6월 7일
0

Django

목록 보기
6/15

Django 기초 프로젝트 - MyFirstSNS

Pychram 환경에서 개발되었습니다

🎯프로젝트 셋업


👨‍💻프로젝트 가상환경 생성

프로젝트를 django로 세팅하고, python 버전과 프로젝트 경로를 확인한 뒤 CREATE 를 실행한다

👨‍💻앱 생성, 연결

프로젝트에 구분되는 기능을 나눠주는 앱을 생성한다.
하나의 프로젝트에 몰아 넣는 것 보다 가독성이 좋아진다.

django-admin startapp user
django-admin startapp tweet

생성한 프로젝트는 프로젝트의 settings.py 중, Installed_APP에 적어준다.
연결하지 않은 앱을 실행해도 적용할 수가 없다!

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'user',
    'tweet',
]

앱 마다 urls.py 파일을 생성하고, 프로젝트의 urls.py에서 각 앱의 url을 읽을 수 있게 해준다.

from django.contrib import admin
from django.urls import path, include

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

include 메서드를 활용해 특정 앱 내의 모든 url을 읽을 수 있게 한다.

🎯유저 기능


👨‍💻UserModel

AbstractUser 기능을 활용한 UserModel을 생성해서 회원가입/로그인/로그아웃 API를 만들자

user.models.py

from django.db import models
from django.contrib.auth.models import AbstractUser

# Create your models here.

class UserModel(AbstractUser):
    class Meta:
        db_table = "user"
    bio=models.CharField(max_length=256, default='')

사용할 테이블 중, bio를 제외한 모든 필드가 존재하기 때문에 bio만 추가로 작성한다

이렇게 작성한 모델은 Makemigrations 와 Migrate 를 통해서 프로젝트에 추가해준다!

python manage.py makemigrations
python manage.py migrate

👨‍💻회원가입 기능

UserModel을 가지고 회원가입 API를 작성한다.

📌 Django API 작성 순서!
1. urls.py 에 앱 루트 url 작성
2. views.py 에 API 함수 작성
3. POSTMAN 테스트
4. 프론트엔드 연결

urls.py

urlpatterns = [
    path('sign-up/', views.sign_up_view, name='sign-up'),

views.py

def sign_up_view(request):
    if request.method == 'GET':
        user = request.user.is_authenticated
        if user:
            return redirect('/')
        else:
            return render(request, 'user/signup.html')
    elif request.method == 'POST':
        username = request.POST.get('username')
        password = request.POST.get('password')
        password2 = request.POST.get('password2')
        bio = request.POST.get('bio')

        if password == password2:
            exist_user = get_user_model().objects.filter(username=username)
            if not exist_user:
                UserModel.objects.create_user(username=username, password=password, bio=bio)
                return redirect('/sign-in')
            else:
                return render(request, 'user/signup.html')
        else:
            return render(request, 'user/signup.html')

user/signup.html

<form class="form-area" method="post" action="/sign-up/">
                {% csrf_token %}
                <div class="form-group mt-2 mb-2">
                    <label for="username">이름</label>
                    <input type="text" class="form-control" id="username" name="username">
                </div>
                <div class="form-group mt-2 mb-2">
                    <label for="password">비밀번호</label>
                    <input type="password" class="form-control" id="password" name="password">
                </div>
                <div class="form-group mt-2 mb-2">
                    <label for="password2">비밀번호 확인</label>
                    <input type="password" class="form-control" id="password2" name="password2">
                </div>
                <div class="form-group mt-2 mb-2">
                    <label for="bio">나를 한마디로</label>
                    <input type="text" class="form-control" id="bio" name="bio">
                </div>
                <hr>
                <div style="float: right">
                    <button type="submit" class="btn btn-primary">회원가입</button>
                    <a href="/sign-in" class="btn btn-secondary">로그인 페이지로</a>
                </div>
            </form>

👨‍💻로그인 기능

📌 Django API 작성 순서!
1. urls.py 에 앱 루트 url 작성
2. views.py 에 API 함수 작성
3. POSTMAN 테스트
4. 프론트엔드 연결

👨‍💻로그아웃 기능

📌 Django API 작성 순서!
1. urls.py 에 앱 루트 url 작성
2. views.py 에 API 함수 작성
3. POSTMAN 테스트
4. 프론트엔드 연결

🎯트윗 기능


👨‍💻TweetModel

👨‍💻트윗 출력

📌 Django API 작성 순서!
1. urls.py 에 앱 루트 url 작성
2. views.py 에 API 함수 작성
3. POSTMAN 테스트
4. 프론트엔드 연결

👨‍💻트윗 작성하기

📌 Django API 작성 순서!
1. urls.py 에 앱 루트 url 작성
2. views.py 에 API 함수 작성
3. POSTMAN 테스트
4. 프론트엔드 연결

👨‍💻트윗 삭제하기

📌 Django API 작성 순서!
1. urls.py 에 앱 루트 url 작성
2. views.py 에 API 함수 작성
3. POSTMAN 테스트
4. 프론트엔드 연결

👨‍💻트윗 상세보기

📌 Django API 작성 순서!
1. urls.py 에 앱 루트 url 작성
2. views.py 에 API 함수 작성
3. POSTMAN 테스트
4. 프론트엔드 연결

👨‍💻TweetComment

👨‍💻코멘트 출력

📌 Django API 작성 순서!
1. urls.py 에 앱 루트 url 작성
2. views.py 에 API 함수 작성
3. POSTMAN 테스트
4. 프론트엔드 연결

👨‍💻코멘트 작성하기

📌 Django API 작성 순서!
1. urls.py 에 앱 루트 url 작성
2. views.py 에 API 함수 작성
3. POSTMAN 테스트
4. 프론트엔드 연결

👨‍💻코멘트 삭제하기

📌 Django API 작성 순서!
1. urls.py 에 앱 루트 url 작성
2. views.py 에 API 함수 작성
3. POSTMAN 테스트
4. 프론트엔드 연결

🎯데이터베이스 관계


👨‍💻MyPizza, MyTopping

👨‍💻UserModel - Follow

profile
하루종일 몽상가

0개의 댓글