로그인 한 사람만 Post Create 에 접근

Programming

by sungyong


Posted on March 22, 2019, 12:03 a.m.


blog/tests.py를 수정해서, 로그인 하지 않았을 때는 blog/create/ 위치에 접근할 수 없도록 했는지 test 합니다.

#blog/tests.py
... 앞 생략
def test_post_create(self):
    response = self.client.get('/blog/create/')
    self.assertNotEqual(response.status_code, 200)

    self.client.login(username='smith', password='nopassword')
    response = self.client.get('/blog/create/')
    self.assertEqual(response.status_code, 200)
    ... 후략

blog/views.py를 아래와 같이 수정합니다.

# blog/views.py
from django.contrib.auth.mixins import LoginRequiredMixin
... 중략
class PostCreate(LoginRequiredMixin, CreateView):
    model = Post
    fields = [
        'title', 'content', 'head_image', 'category', 'tags'
    ]

    def form_valid(self, form):
        current_user = self.request.user
        if current_user.is_authenticated:
            form.instance.author = current_user
            return super(type(self), self).form_valid(form)
        else:
            return redirect('/blog/')


...후략


Leave a Comment:
Search