본문 바로가기

내일 배움 캠프/TIL

TIL) 5주차 5일

 

진짜 django에 css 적용시키는거

 

하고 나서는 엄청 간단한거 였는데

 

왜이리 어려웠던 것일까.. 

 

이거때문에 몇시간을 날렸는지 참 ..

 


01) Django html에 css 적용 시키기

1.  settimgs.py에 static 파일들의 위치를 알려주어야 한다.

# settings.py
STATIC_URL = '/static/'
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static'),]

 

2. css를 적용시킬 html에 템플릿 문법을 사용한다.

<!DOCTYPE html>
{% load static %}
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link rel="stylesheet" href="{% static 'css/boyoung.css' %}">
</head>
<body>
</body>
</html>

 

3. 각각의 css를 import하는 방법도 있다.

css.css에 다른 css를 import함

 

4. py manage.py runserver을 통해 css가 잘 들어갔는지 확인한다. 만약 css가 잘 적용이 안됐다면 포트를 바꿔주면 잘 적용된다! (예시 : py manage.py runserver 5000)

 


02) log in이 되지 않는 이유

일반적인 username을 받아와서 로그인하는게 아니라 email을 넣어서 로그인하는 형식으로 하려했음

def log_in_view(request):
    if request.method == 'POST':
        email = request.POST.get('email', None)
        password = request.POST.get('password', None)
        
        me = auth.authenticate(request, email=email, password=password)
        if me is not None:
            auth.login(request, me)
            return redirect('/') 
        else:
            return redirect('user:log_in')

 

결과 : authenticate에 email과 password를 받아왔는데 이게 잘못됐다. authenticate는 받아오는 형식이 정해져 있다. 그래서 authenticate(request, username=username, password=password) 순으로 받아야와야 하는데 만약 username 대신에 email을 받아오고 싶다면 사용자 지정 백엔드를 만들어주어야 한다.

# backends.py
from django.contrib.auth import get_user_model
from django.contrib.auth.backends import ModelBackend

class EmailBackend(ModelBackend):
    def authenticate(self, request, username=None, password=None, **kwargs):
        UserModel = get_user_model()
        try:
            user = UserModel.objects.get(email=username)
        except UserModel.DoesNotExist:
            return None
        else:
            if user.check_password(password):
                return user
        return None
# settings.py
AUTHENTICATION_BACKENDS = ['users.backends.EmailBackend']

 

'내일 배움 캠프 > TIL' 카테고리의 다른 글

TIL) 6주차 2일  (0) 2023.04.20
TIL) 6주차 1일  (0) 2023.04.18
TIL) 5주차 4일  (0) 2023.04.14
TIL) 5주차 3일  (0) 2023.04.13
TIL) 5주차 2일  (0) 2023.04.11