Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 영문과숫자가혼합된중복되지않는주소
- 팔로우팔로워
- logintest
- 팔로우기획
- 파이썬
- 제일상단으로
- gototop
- replyschema
- 앱생성방법
- 가짜 세션
- 유튜브주소
- Python
- 로그인테스트
- 차단프로세스
- 장고
- celery # redis #django #장고 #python #파이썬
- fakesession
- django
- block_user_process
- Bootstrap
- follow 기획
- url설계
- pagenotfound
- Block
- 반응형이미지
- 데이타타입
- 이용자블럭
- 차단시프로세스
- blockuser
- 댓글설계
Archives
- Today
- Total
코딩이야기
앱 생성. 본문
장고에서 앱 = 기능이 모여 있는 폴더와 같은 개념.
우리가 흔히 모바일에서 보는 앱과는 그 의미가 다르다. 장고의 앱은 훨씬 더 좁은 의미로 사용한다.
account라는 폴더안에서, 로그인,회원가입, 로그아웃등의 페이지가 있도록 구성하는 예제.
1. 앱 생성
account 라는 이름으로 새로운 Django 앱을 생성한다.
python manage.py startapp account
2. 모델 작성
account/models.py 파일을 수정하여 유저 모델을 작성한다.
from django.contrib.auth.models import AbstractUser
from django.db import models
class CustomUser(AbstractUser):
# 추가로 필요한 필드 작성
pass
# 데이터베이스 관련된 내용을 작성
3. 폼 작성
account/forms.py 파일을 생성하고 사용자 등록 및 로그인 폼을 작성한다.
from django import forms
from django.contrib.auth.forms import UserCreationForm, AuthenticationForm
from .models import CustomUser
class SignUpForm(UserCreationForm):
class Meta:
model = CustomUser
fields = ['username', 'email', 'password1', 'password2']
class LoginForm(AuthenticationForm):
class Meta:
model = CustomUser
fields = ['username', 'password']
4. 뷰 작성
account/views.py 파일을 수정하여 회원가입, 로그인, 로그아웃 뷰를 작성한다.
from django.contrib.auth import login, logout, authenticate
from django.contrib.auth.forms import AuthenticationForm
from django.shortcuts import render, redirect
from .forms import SignUpForm, LoginForm
def sign_up(request):
if request.method == 'POST':
form = SignUpForm(request.POST)
if form.is_valid():
user = form.save()
login(request, user)
return redirect('home')
else:
form = SignUpForm()
return render(request, 'account/sign_up.html', {'form': form})
def sign_in(request):
if request.method == 'POST':
form = LoginForm(request, data=request.POST)
if form.is_valid():
user = form.get_user()
login(request, user)
return redirect('home')
else:
form = LoginForm()
return render(request, 'account/sign_in.html', {'form': form})
def log_out(request):
logout(request)
return redirect('home')
5. URL 설정
account/urls.py 파일을 생성하여 URL 패턴을 설정한다.
from django.urls import path
from .views import sign_up, sign_in, log_out
urlpatterns = [
path('sign_up/', sign_up, name='sign_up'),
path('sign_in/', sign_in, name='sign_in'),
path('log_out/', log_out, name='log_out'),
]
6. 템플릿 작성
account/templates/account 폴더를 생성하고 sign_up.html 및 sign_in.html 파일을 작성한다.
<!-- sign_up.html -->
<h2>Sign Up</h2>
<form method="POST">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">Sign Up</button>
</form>
<!-- sign_in.html -->
<h2>Sign In</h2>
<form method="POST">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">Sign In</button>
</form>
7. 프로젝트 URL 설정
최상위 urls.py 파일을 수정하여 account 앱의 URL을 포함시킨다.
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('account/', include('account.urls')),
path('', include('main.urls')), # main 앱의 URL 설정
]
'BackEnd > 장고(Django)' 카테고리의 다른 글
Django 404 페이지 세팅 (0) | 2024.07.07 |
---|---|
Django 템플릿에서는 request.COOKIES를 직접 접근할 수 없습니다. (0) | 2024.06.24 |
Django에서 실제 세션을 사용하지 않고 가짜 세션을 구현하는 방법 (0) | 2024.06.23 |
Include & {% block %} 태그 사용법 (0) | 2024.06.22 |
첫 번째 장고 앱 작성하기, part 1 (0) | 2024.05.11 |