[REAL Python – Django] – “Django – django-ckeditor 폼에 적용하기”

[REAL Python – Django] – “Django – django-ckeditor 폼에 적용하기”

5월 14, 2022

작업 전 발생한 문제

URL패턴이 이와 같다고 가정해 보자.

위는 첫 번째 카테고리에 속한 게시물들을 모두 보여주는 URL패턴이고, 아래는 새 포스트를 작성하기 위해서 새로 만든 UR패턴입니다.

생각치 못한 문제였는데, 만약 blog/create_post 를 브라우저에서 요청하면 찾을 수 없는 쿼리라는 에러 메시지가 발생한다는 것이었습니다. 생각해 보면 당연한 문제입니다. create_post 라는 것이 1차 카테고리에 속한 모든 게시물들을 보여주라는 것인지, 새로운 포스트를 생성하라는 것인지를 당연히 모르겠죠. URL패턴을 작성할 때 이 부분을 고려하지 못했던 것 같습니다.

임시방편 해결책?

기본적으로 맨 처음부터 무엇이든지 될 수 있는 문자열을 URL에 받아서 생긴 문제이므로 위처럼 새로운 코드를 추가함으로서 해결했습니다. 그런데, 실력의 부재인 것 같아서 참 마음이 아픕니다…;;

Django-ckeditor 를 form에 적용시켜 보자.

위의 사진과 단어 순서가 다름에 주의!

# views.py
class PostCreateView(CreateView):
    template_name = 'blog/post_form.html'
    success_url = '/blog/'
    form_class = PostForm

위와 같은 코드를 작성해줍니다. form_class 를 위해서 forms.py 를 하나 만들어 준 다음,

# forms.py
from django import forms
from .models import Post

class PostForm(forms.ModelForm):
    class Meta:
        model = Post
        fields = ['title', 'subtitle', 'head_image', 'content', 'category']

forms.py 에 위의 코드를 작성해줍니다.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Create new post</title>
</head>
<body>
<form method="post">
    {% csrf_token %}
    {{ form.media }}
    {{ form.as_p }}
    <input type="submit" value="Save">
</form>
</body>
</html>

템플릿도 작성해 주면..~

새 포스트를 작성할 때에, ckeditor가 성공적으로 로드되는 것을 볼 수 있습니다.
DB에도 잘 저장된 것을 볼 수 있네요!

물론 이대로 사용하지는 않을 겁니다. form에 대한 공부를 조금 더 해 보고, 커스터마이징 해 보는 것으로~

Leave A Comment

Avada Programmer

Hello! We are a group of skilled developers and programmers.

Hello! We are a group of skilled developers and programmers.

We have experience in working with different platforms, systems, and devices to create products that are compatible and accessible.