진짜 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하는 방법도 있다.
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 |