ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Django Tip
    Django 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
Designed by Tistory.