2022. 10. 12. 23:57ㆍ스파르타코딩클럽[AI트랙 3기]/장고 거북이반
1)vs코드 열기
2)가상환경 실행 source venv/scripts/activate
3)requirements 설치
----------------------
4)서버실행
python manage.py runserver > 마이그레이션 안했다고 에러 뜰 수 있음.(무시하고 돌리기)
5)마이그레이션 해주기
python manage.py makemigrations > 디비에 어떻게 적용할지 나옴 (빈테이블 생성)
python manage.py migrate >실제 디비에 적용(11개의 테이블 생성됨. 원래 설치되는 것)
6)admin페이지 들어가기
python manage.py createsupersuser
7)새로운 users앱 만들기
python manage.py startapp users
*settings.py 에 apps에 추가.
8)user모델 작성하기 (참조는 python custom user 구글링하면 사이트 바로 들어감.)
*users>models.py
from django.db import models
from djang.contrib.auth.models import AbstractUser
class User(AbstractUser):
profile = models.TextField(max_length=500, blank=True)
>>settings.py 가서 AUTH_USER_MODEL= ‘myapp.Myuser’ 그냥 넣으면 안됨. users.User (앱과 모델)
+)괄호안의 AbstractUser는 상속 받은 것임.
9)모델을 만든 후에는 항상 마이그레이션하기
python manage.py makemigrations > 001_inital 이라는 파일이 생성됨.
python manage.py migrate > 오류 발생(디비 날려주고 마이그레이트해줌)
다시 admin페이지에서 확인(superuser 로그인 안됨. 왜냐하면 디비를 날렸음. 다시 슈퍼유저)
admin 들어가면 user페이지가 없어져있음. admin.py 페이지에 등록해줘야 함.
from django.contrib import admin
from django.contrib.auth.admin import userAdmin
from .models import User #.models 현재 경로에 있는 models에서 User를 가져오라는 뜻
admi.site.register(User, UserAdmin)
*기능만들 때 models 먼저 만들고 admin에서 추가됐는지 확인.
10)users로 가는 url만들기
users 안에서 urls.py 만들기
*전체 urls.py
from django.contrib import admin
from django.urls import path ,include #include해줘서 users의 urls.py 댕겨오기
urlpatterns = [
path(“admin/“ admin.site.urls)
*users에서 만든 urls.py
from django.urls import path, include
from user import views
app_name ‘users’ #app_name을 정의해줘야 users의 signup 인지 확인 가능
urlpatterns = [
path(“signup/”, views.signup, name=“signup”)
]
11)views.py 작성
from django.shortcuts import render
from django.http import HttpResponse #장고에서 가져오는 것
def signup(request):
return HttpResponse(“hi”)
웹페이지 > users/signup 해야 작동됨. 그냥 signip 하면 작동 안됨.
>>>이과정을 통해 url과 views.py가 연결되어있음을 확인해야함.
12)templates 만들기
파일 만들고 signup.html
!하고 엔터 title Sign up
<h1>회원 가입 페이지
<form action=“{% url ‘users:signup’ %}” method=“POST”>
<input type=“text” name=“username” placehorder=“usersname” />
<input type=“password” name=“password” />
<input type=“password” name=“passwordcheck” />
<input type=“submit”>
</form>
#action 이 보내는 주소, 그래서 url이 들어가야 함
*views.py
def signup(request):
<form action=“{% url ‘users:signup’ %}” method=“POST”>
{%scrf tokken%}
<input type=“text” name=“username” placehorder=“usersnaame” />
<input type=“password” name=“password” />
<input type=“password” name=“passwordcheck” />
<input type=“submit”>
</form>
return render(request,‘signup.html’)
placehorder=“usersnaame” 하면 회색글자로 어떤 값을 넣는지 알려줌
+)주소창에 치면 method는 무조건 get(보여주기)/메소드 유형으로 구별하기
*views.py
def signup(requset):
if request.method == “GET”: #그냥 url 보여주기
return render(request, ‘signup.html’)
elif request.method == “POST”: #내용을 수정해줄 때 사용
return HttpResponse(“다른거”) #html 다른거라고 뜨면 잘 연결된 것으로 판단.
else:
return HttpResponse(“허용되지 않은 메소드입니다.”)
+)
<input type=“text” name=“username” placehorder=“usersnaame” id=“username” class=“username”/>
name은 백엔드에서 보낼 때 이름을 의미함. /palcehorder는 뒤에 회색으로나온 글자 / id는 고유한 것으로 하나 / class는 여러 개 줄 수 있음. css 적용할 때 한번에 바꾸고 싶으면 class 이용. >>> id, class는 프론트엔드
def signup(reqauset):
if request.method == “GET”:
return render(request, ‘signup.html’)
elif request.method == “POST”:
username = request.POST.get(‘username’)
password = request.POST.get(‘password’)
passworkdcheck = request.POST.get(‘passwordcheck’)
if password == passwordcheck:
print(username, password, passwordcheck) #웹에서 값넣고 다시 편집기 들어오면 출력됨.
*정보 넣어주기
def signup(reqauset):
if request.method == “GET”:
return render(request, ‘signip.html’)
elif request.method == “POST”:
username = request.POST.get(‘username’)
password = request.POST.get(‘password’)
passworkdcheck = request.POST.get(‘passwordcheck’)
if password == passwordcheck:
User.objects.create_user(usernmae = username, password = password)
return HttpResponse(“회원가입 완료.”)
else :
return HttpResponse(“비밀번호 다릅니다.”)
else:
return HttpResponse(“허용되지 않은 메소드입니다.”)
'스파르타코딩클럽[AI트랙 3기] > 장고 거북이반' 카테고리의 다른 글
| [장고 프로젝트 거북이반] 22101 #4 (0) | 2022.10.17 |
|---|---|
| [장고 프로젝트 거북이반] 221016 #3 (0) | 2022.10.17 |
| [장고 프로젝트 거북이반] 221012 #1 (0) | 2022.10.12 |
| [장고 거북이반] 221012 #5 (0) | 2022.10.12 |
| [장고 거북이반] 221003 #4 (0) | 2022.10.05 |