$ django-admin startapp user
$ django-admin startapp tweet
settings.py의 installed apps에 추가해준다
ORM: db를 하나의 객체로 보고 class를 이용해서 db를 관리할 수 있도록 함
-> user 앱에 어떤 정보가 들어갈지 종류와 형식을 지정
모델 만든 후에 db에 넣기
python3 manage.py makemigrations
->데이터 베이스에 변경사항이 있음을 알려줌
python manage.py migrate
->데이터베이스의 변경사항을 반영해줌
->위 사진 오른쪽 db에서 변경사항 확인 가능
관리자만들기:
python manage.py createsuperuser
usermodel 추가하기
admin.site.register(UserModel)
<form class="form-area" method ='post' action="/sign-up/">
{# form: 화면의 데이터를 서버로 전송할때 사용하는 태그 #}
{# method: 읽어오고 싶을 땐 get/주고싶을 땐 post -> 회원가입은 정보를 서버에 전달하니까 post #}
{# action: 어디 url로 저장할건지 #}
그 아래
{% csrf_token %}
{# 포스트시에 보안기능 추가 #}
그 아래 기능들 추가하고(id,passward,bio..)
회원가입 버튼 추가
<button type="submit" class="btn btn-primary">회원가입</button>
{# form 안에 있으면 해당 form 실행 -sign-up이라는 url로 post 방식으로 데이터를 보내주는 버튼 #}
from django.shortcuts import render, redirect
# render: html 파일을 화면에 보여줌
from .models import UserModel
# 지금 파일과 같은 위치에 있는 models라는 파일에서 UserModel을 가져온다
-> UserModel은 models에 있는 클래스
def sign_up_view(request): #리퀘스트가 들어옴
if request.method == 'GET': #요청 방식이 겟이면
return render(request, 'user/signup.html') #화면을 보여주고
elif request.method == 'POST': # 포스트면 다른거(데이터베이스 수정.추가.삭제같은 기능들)함
#이하에서 받아준다
username = request.POST.get('username',None)
#username이 없으면 none으로 처리
password = request.POST.get('password', None)
password2 = request.POST.get('password2', None)
bio = request.POST.get('bio', None)
if password != password2:
return render(request, 'user/signup.html')
#비밀번호가 다르면 회원가입 화면을 다시 띄워준
else:
new_user = UserModel()
new_user.username = username
new_user.password = password
new_user.bio = bio
new_user.save()
#저장
return redirect('/sign-in')
#회원가입이 완료되면 로그인 페이지로 이동
- request(request,template_name)-> 화면에 기재된 템플릿을 띄움(기본형)
render(request, template_name, context=None, content_type=None, status=None, using=None)
- redirect(url)(기본형)
redirect(to, permanent=False, *args, **kwargs)
->url은 상대, 절대 모두 사용가능
->url로 이동한다 = url에 해당하는 views.py가 실행된다
a = 10
def test1():
b = 20
def test2():
print(a) # 10은 나오고!!
print(b) # 얘만!! 에러남 (NameError: name 'b' is not defined)
test1()
test2()
-> 10은 나옴!!!!
a = list('abcdefg')
print(a)
numbers = [x for x in range(1, 10001)]
->1부터 10000까지의 수면 10001을 써야한다⭐️⭐️⭐️
numbers = list(range(1,10001))
-> 이렇게도 만들 수 있다 wow
users.sort(key=lambda x: sum([x['math_score'],x['science_score'],x['english_score'],x['social_score']]),reverse=True)
sorted_users = users.sorted(users,key=lambda x:x['math_score']+x['science_score']+x['english_score']+x['social_score'])
sum은 써도 되고 안써도 상관없고
중요한건 모양 -> 리스트.sort(key=lambda x: 수식)
이게 왜이렇게 생각이 안나지 ㅠㅠ