장고걸스 튜토리얼

장고걸스 튜토리얼을 따라서 공부하는 중입니다. 맥북 사용합니다.

모든 작업은 가상환경안에서 해야한다.

=> 왜 가상환경에서 해야하는가? 에 대한 질문이 생겨 찾아본 결과, '독립된' 환경이 필요하기 때문이였다.

예를 들어, 파이썬 프로젝트를 2개를 동시에 개발한다고 생각해보자. 첫번째 프로젝트에 필요한 환경과 두번째 프로젝트에 필요한 환경이 다를 수 있다. 그렇다면 한 데스크톱에 두 가지 버전의 파이썬을 다운받아야하는 문제가 생긴다. 하지만 가상환경을 사용한다면 그런 수고를 덜어낼 수 있기 때문이다.

1. 가상환경 작동시키기

source myvenv/bin/activate

PythonAnywhere의 콘솔에서도 항상 킬 것!

2. PythonAnywhere로 배포 한 후 로그인

아무리 해도 안되서 왜 인가 싶었는데,,,
내가 PythonAnywhere에서 createsuperuser 안해줘서 그랬다 ㅎ

python manage.py migrate 
// migrate executes those SQL commands in the database
python manage.py createsuperuser

이렇게 콘솔에 입력하면 된다. 

3. 하라는 대로 했는 데 CSS가 안먹힌다.

mysite-settings.py 를 봐야한다.

STATIC_URL = '/static/'
STATIC_ROOT= os.path.join(BASE_DIR, 'static')

로 했었을 때는 인식을 못했으나,

STATIC_URL = '/static/'
STATIC_DIRS= os.path.join(BASE_DIR, 'static')

이렇게 바꾸니 인식을 했다.

4. html 파일은 이렇게

{% load static %}
<html>
    <head>
        <title>Django Girls blog</title>
        <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
        <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap-theme.min.css">
        <link rel="stylesheet" href="{% static 'css/blog.css' %}">
        <link href="//fonts.googleapis.com/css?family=Lobster&subset=latin,latin-ext" rel="stylesheet" type="text/css">
    </head>
    <body>
        <div class="page-header">
            <h1><a href="/">Django Girls Blog</a></h1>
        </div>

        <div class="content container">
            <div class="row">
                <div class="col-md-8">
                    {% for post in posts %}
                        <div class="post">
                            <div class="date">
                                <p>published: {{ post.published_date }}</p>
                            </div>
                            <h1><a href="">{{ post.title }}</a></h1>
                            <p>{{ post.text|linebreaksbr }}</p>
                        </div>
                    {% endfor %}
                </div>
            </div>
        </div>
    </body>
</html>

5. css 파일은 이렇게

.page-header {
    background-color: #ff9400;
    margin-top: 0;
    padding: 20px 20px 20px 40px;
}

.page-header h1, .page-header h1 a, .page-header h1 a:visited, .page-header h1 a:active {
    color: #ffffff;
    font-size: 36pt;
    text-decoration: none;
}

.content {
    margin-left: 40px;
}

h1, h2, h3, h4 {
    font-family: 'Lobster', cursive;
}

.date {
    color: #828282;
}

.save {
    float: right;
}

.post-form textarea, .post-form input {
    width: 100%;
}

.top-menu, .top-menu:hover, .top-menu:visited {
    color: #ffffff;
    float: right;
    font-size: 26pt;
    margin-right: 20px;
}

.post {
    margin-bottom: 70px;
}

.post h1 a, .post h1 a:visited {
    color: #000000;
}

이렇게 되면 성공

6. 오류 발생

Using the URLconf defined in mysite.urls, Django tried these URL patterns, in this order: admin/ ^$ [name='post_list'] ^post/(?P[0-9]+)/$ [name='post_detail'] ^post/new/$ [name='post_new'] ^post/(?P[0-9]+)/edit/$ [name='post_edit'] The current path, post/new/blog.views.post_detail, didn't match any of these.

-> view.py 에서 redirect를 변경해주면 됨
return redirect('blog.views.post_detail', pk=post.pk) 이부분을
return redirect('post_detail', pk=post.pk)
solves the problem.
이런식으로.

7. 결과물

https://ayleeee.pythonanywhere.com
3개월까지만 유효한 링크! 재밌게 만들었다.
특히, 깃을 계속 쓰게 해줘서 좋았다.
초보자를 위한 정말 좋은 튜토리얼이였던 것 같다.

다음에는 삭제하는 기능도 한 번 만들어 보고 싶다.

좋은 웹페이지 즐겨찾기