inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트

Messages Framework

messages-alert가 제대로 작동하지 않습니다.

해결된 질문

249

뤀쪼

작성한 질문수 18

1

안녕하세요. 현재 settings.py에서 message_tag를 이용해 태그를 error->danger로 변경하는 부분이 적용되지 않는 문제가 있습니다.
 
이에 앞서 모든 message tags가 일괄적으로 info로 나타나는 문제가 있습니다. 전에 layout.html에서
<div class="alert alert-info">  
{{ message.message }}
</div>
를 넣어줬는데, 정상적으로 작동해야할 messages.success마저 실제로는 info로 제공됩니다. alert-info를 alert-success로 바꿨을 때는 success가 적용되는 부분은 확인했습니다.(아래 "this is warning", "this is success"는 messages.warning/success 가 실제로는 info로 제공되는 문제입니다.)
 
views.py와 post_new, post_edit 함수 코딩은 다음과 같습니다.
 
from django.contrib import messages

@login_required # request.user를 외래키로 할당하려면 로그인 상태라는 보증이 필요하니까
def post_new(request):
    if request.method == 'POST':
        form = PostForm(request.POST, request.FILES)
        if form.is_valid():
            post = form.save(commit=False)
            post.author = request.user # 현재 로그인 유저 instance
            post.save()
            messages.success(request, '포스팅을 저장했습니다.')
            return redirect(post)        
    else :
        form = PostForm()

    return render(request, 'instagram/post_form.html', {
        'form': form,  
    })

@login_required
def post_edit(request, pk):
    post = get_object_or_404(Post, pk=pk)

    # 작성자 체크 팁인데 login_required 장식자를 커스텀하면 해당 기능을 넣을 수 있을 듯?
    if post.author != request.user:
        messages.error(request, '작성자만 수정할 수 있습니다.')
        return redirect(post)

    if request.method == 'POST':
        form = PostForm(request.POST, request.FILES, instance=post)
        if form.is_valid():
            post = form.save()
            # post = form.save(commit=False)
            # post.save()
            messages.success(request, '포스팅을 수정했습니다.')
            return redirect(post)        
    else :
        form = PostForm(instance=post)

    return render(request, 'instagram/post_form.html', {
        'form': form,  
  })

python docker react django

답변 1

1

이진석

안녕하세요.

템플릿에서 각 메세지를 렌더링할 때,

메세지 내용은 {{ message.message }} 를 통해 잘 지정하셨지만,

메세지 레벨은 일괄적으로 클래스명에서 alert alert-info 로만 쓰셔서 그렇습니다. 이 클래스명도 메세지마다 달라져야 합니다.

메세지 레벨은 {{ message.tags }} 를 통해서 참조하실 수 있습니다.

공식문서 : https://docs.djangoproject.com/en/4.0/ref/contrib/messages/#displaying-messages

그러니 class="alert alert-info" 대신에 class="alert alert-{{ message.tags }}" 로 써보시겠어요?

렌더링된 html이 원하는 대로 잘 구성되었는 지, 확인하는 습관을 들이시면 오류를 빠르게 찾아내실 수 있습니다.

화이팅입니다. :-)

이진석 드림

 

0

뤀쪼

감사합니다.

안녕하세요.

0

62

1

[OneToOne Field Demo] get_user_model() 메서드를 활용해야 하는 이유?

0

285

1

useEffect 훅에서 else 유무에 따른 결과

0

222

1

useAxios 훅의 dependency array 설정

0

254

1

useEffect에서 변수 업데이트 관련 질문

0

390

1

rest_framework.generics.CreateAPIView의 model 속성 유무

0

276

1

bootstrap4

0

481

4

리뉴얼 강의가 오픈이 되면 기존 강의는 더이상 못보는걸까요

1

374

1

admin form에서 앞선 필드 선택 후 다른 필드 select widget 구성하는 방법

0

578

3

useState는 필수일까요?

0

272

1

python manage.py makemigrations instagram 시 created_at default 오류가 발생합니다.

0

611

4

Django allauth를 사용한 소셜 로그인 시 에러

0

660

1

프로젝트명 변경 뒤, 디버그툴바+디버그모드 사용 시 에러

0

569

2

useLocalStorage() 함수 사용여부

0

238

1

django에 LOGIN_URL = '/accounts/login/'의 의미?

0

454

1

리듀서의 의미 재확인

0

439

1

simple-jwt Refresh Token 사용 노하우

0

907

2

docker compose 를 통한 배포 관련 오류 문의

0

686

1

파이썬 속도 장고 관련 궁금한게 있습니다.

0

372

1

is_like_user

0

238

1

related_name 오류

0

278

1

re_path 오류

0

265

1

re_path url

0

255

1

No post matches the given query

0

671

2