DevHyun

[DevHyun's Blog] Django&Python으로 만든 Blog에 로그인한 사용자만 글쓰게 만들기! 본문

Web/Django&Python Blog Projecct

[DevHyun's Blog] Django&Python으로 만든 Blog에 로그인한 사용자만 글쓰게 만들기!

D3V3L0P3R 2020. 10. 21. 20:45

 

d3v3lop3r.tistory.com/24

 

Django Form 만들기(일반 사용자가 Post 수정 가능하게 만들기)

Django Form 만들기(일반 사용자가 Post 추가 가능하게 만들기) 에서 이어집니다. d3v3lop3r.tistory.com/24 Django Form 만들기(일반 사용자가 Post 추가 가능하게 만들기) 장고걸스 코치들과 자원봉사자들의 수

d3v3lop3r.tistory.com

d3v3lop3r.tistory.com/25

 

Django Form 만들기(일반 사용자가 Post 수정 가능하게 만들기)

Django Form 만들기(일반 사용자가 Post 추가 가능하게 만들기) 에서 이어집니다. d3v3lop3r.tistory.com/24 Django Form 만들기(일반 사용자가 Post 추가 가능하게 만들기) 장고걸스 코치들과 자원봉사자들의 수

d3v3lop3r.tistory.com

 

위의 포스트에서 이어집니다!

 

장고걸스 코치들과 자원봉사자들의 수고로 번역된 글을 참고하였습니다.

tutorial.djangogirls.org/ko

 

Blog를 만들었으나! 로그인한 사용자가 아닌 모든 사용자가 다 글을 쓸 수 있었다.. 하지만 로그인한 사용자만 글을 쓸 수 있도록 보안을 강화해보자!!

 

1. base.html에서 Post 게시 버튼의 div로 이동해서 로그인 여부에 따라 버튼 보이는 기능 추가하기

* Blog/templates/Blog/base.html

 

<html>
...
..
.
    <body>
        <div class ="page-header">
            {% if user.is_authenticated %}
                   <a href="{% url 'post_new' %}" class="top-menu"><span class="glyphicon glyphicon-plus"></span></a>
            {% endif %}
...
..
.
        </div>
...
..
.
    </body>
</html>

 

* {% if %} : 브라우저에 페이지를 요청 하는 사용자가 로그인 하는 경우 링크가 발생

- is_authenticated : 로그인여부 (속성)

- is_anonymous : 로그아웃 여부 (속성)

 

∨ is_authenticated 관련 참고 사이트

wayhome25.github.io/django/2017/05/18/django-auth/

 

 

2. post_detail.html 에 Post 수정 버튼의 div로 이동해서 로그인 여부에 따라 버튼 보이는 기능 추가하기

* Blog/templates/Blog/post_detail.html

 

{% extends 'Blog/base.html' %}

{% block content %}
    <div class="post">
        {% if post.published_date %}
            <div class="date">
                {{ post.published_date }}
            </div>
        {% endif %}
        {% if user.is_authenticated %}
            <a class="btn btn-default" href="{% url 'post_edit' pk=post.pk %}"><span class="glyphicon glyphicon-pencil"></span></a>
        {% endif %}
        <h1>{{ post.title }}</h1>
        <p>{{ post.text|linebreaksbr }}</p>
    </div>
{% endblock %}

 

++ Django Girls 튜토리얼엔 없는 내용!

**admin 페이지 쳐서 들어가기 귀찮으니 메인 화면에 관리자 페이지 버튼 이동 추가해보기!

 

3. base.html에 관리자로 로그인 가능하도록 관리자 페이지 이동 버튼 추가하기

* Blog/templates/Blog/base.html

 

∨ 버튼 이미지 관련 참고 사이트

getbootstrap.com/docs/3.3/components/

 

Components · Bootstrap

Extend form controls by adding text or buttons before, after, or on both sides of any text-based . Use .input-group with an .input-group-addon or .input-group-btn to prepend or append elements to a single .form-control. Textual s only Avoid using elements

getbootstrap.com

<html>
...
..
.
    <body>
        <div class ="page-header">
...
..
.
            {% if user.is_anonymous %}
                   <a href="{% url 'admin' %}" class="top-menu"><span class="glyphicon glyphicon-cog"></span></a>
            {% endif %}
...
..
.
        </div>
...
..
.
    </body>
</html>

* 로그인 안했을때만 보여줘야 하기 때문에 user.is_anonymous 를 사용하였음!

 

 

4. views.py에 admin View 추가하기

* Blog/views.py

...
..
.
from 
django.http import HttpResponse
...
..
.
def admin(request): return HttpResponse(admin)

* admin view 선언! 아무튼 선언!

 

 

5. urls.py에 admin 페이지 추가!

* Blog/urls.py

from django.urls import path
from . import views

urlpatterns = [
...
..
.
    path('admin', views.admin, name='admin'),

]

++ Django Girls 튜토리얼엔 없는 내용 끝!

 

 

6. pythonanywhere에 배포 하기!

 

d3v3lop3r.tistory.com/18

 

Pythonanywhere 에서 Git Project Pull 한 후 재배포 하기

장고걸스 코치들과 자원봉사자들의 수고로 번역된 글을 참고하였습니다. tutorial.djangogirls.org/ko Blog App에서 수정사항이 있을경우 Pycharm에서 Commit-Push 한 후에 Pythonanywhere에서 pull 해줘야 동기화..

d3v3lop3r.tistory.com

 

Comments