장고걸스 튜토리얼
장고걸스 튜토리얼을 따라서 공부하는 중입니다. 맥북 사용합니다.
모든 작업은 가상환경안에서 해야한다.
=> 왜 가상환경에서 해야하는가? 에 대한 질문이 생겨 찾아본 결과, '독립된' 환경이 필요하기 때문이였다.
예를 들어, 파이썬 프로젝트를 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개월까지만 유효한 링크! 재밌게 만들었다.
특히, 깃을 계속 쓰게 해줘서 좋았다.
초보자를 위한 정말 좋은 튜토리얼이였던 것 같다.
다음에는 삭제하는 기능도 한 번 만들어 보고 싶다.
Author And Source
이 문제에 관하여(장고걸스 튜토리얼), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@suzu11/장고걸스-튜토리얼저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)