-
Django TipDjango 2022. 2. 20. 01:21
라우팅
사용자가 접속한 각각의 경로를 누가 처리할 것인가를 지정하는 것
장고에서는 project 폴더 안에 있는 urls.py 가 가장 큰 틀의 라우팅이고 그리고 적당한 app으로 위임을 해주면 그 app이 view안에 있는 특정 함수로 위임을 해서 그 함수가 이 작업을 처리한다.
csrf token
{% csrf_token %}
데이터를 post 방식으로 보낼 때 보안을 위한 기능
session
사용자 정보를 저장하는 공간
AbstractUser
project/user/models.py 안에
from django.contrib.auth.models import AbstractUser -> 장고에서 제공하는 기본 유저 모델을 사용할 것이다.
class UserModel(AbstractUser):
class Meta:
db_table = "my_user"
bio = models.CharField(max_length=256, default='')
-> 장고에서 제공하는 기본유저 모델을 사용하고 그 모델에서 bio를 추가한다.
그리고 project/settings.py 맨 밑에 AUTH_USER_MODEL = 'user.UserModel' 을 추가해줘야 한다.
AUTH_USER_MODEL
project/settings.py 안에 AUTH_USER_MODEL = 'user.UserModel' 을 넣는다는 의미는
user앱 안에 있는 UserModel 클래스를 넣어주고 기본적인 장고의 사용자 모델을 바꾸겠다는 의미
get_user_model
-> 사용자가 데이터베이스 안에 있는지 검사하는 함수
from django.contrib.auth import get_user_model
exist_user = get_user_model().objects.fillter(username=username)
Create User
new_user = UserModel()
new_user.username = username
new_user.password = password
new_user.bio = bio
new_user.save()
위 코드를 한 줄로 바꾸면
UserModel.objects.create_user(username=username, password=password, bio=bio)
auth
auth.authenticate(request, username=username, password=password)
-> 이 함수는 암호화된 비밀번호와 현재 입력된 비밀번호가 일치 하는지, 그게 사용자와 맞는지까지 한 번에 확인 시켜준다.
Logout
auth.logout(request) -> 로그아웃 기능
Login
from django.contrib.auth.decorators import login_required
@login_required
-> 사용자가 로그인이 꼭 되어 있어야만 접근이 가능한 함수라는 뜻
user = request.user.is_authenticated -> 로그인된 사용자를 확인
user = request.user -> 지금 로그인 되어있는 사용자의 정보 전체를 들고 오게 된다.
timesince
-> 몇분 전에 작성된 글을 표시해 줌
ex) {{ tw.created_at|timesince }}
Exclude
-> 해당하는 데이터에서 어떤 것을 빼겠다는 의미
ex) user_list = UserModel.objects.all().exclude(username=request.user.username)
-> 친구 리스트, 사용자 리스트를 보는데 굳이 내가 나를 볼 필요는 없기 때문에 로그인한 유저는 빼준다.
{% url "" %}
django 에서는 html에 url로 넘어가는 태그를 쓸 때 {% url "" %} 태그형태를 사용한다.
ex)
<a href="{% url 'signin' %}">로그인</a>
urls.py 안에 name은 위 태그 url이름과 같아야 한다. 또한 redirect 할 때도 url 이름이 쓰인다.
Admin 페이지에 object 이름 보이기
모델 작성할 때 마지막에
def __str__(self):
return self.title
위 코드를 넣어주면 admin 페이지에 title이 보여지게 된다.
ex) admin page
Article object(1) -> title
'Django' 카테고리의 다른 글
Django Unit Test in VSCode (0) 2022.02.20 Poetry 와 package (0) 2022.02.20 django basic (0) 2022.02.20 TemplateDoesNotExist error (0) 2022.01.25 Django 프로젝트 세팅 (0) 2022.01.23