관리 메뉴

Storage Gonie

41. (app3) 킬로그램 앱 초기화 본문

웹개발/Django 웹서비스 개발(인프런)

41. (app3) 킬로그램 앱 초기화

Storage Gonie 2019. 2. 21. 21:49
반응형

1. Pycharm에서 'django_app3_kilogram' 이름으로 프로젝트 생성.

- 가상환경은 예전에 사용하던 것으로 사용.


2. 커맨드 창에서 가상환경 활성화

- "source activate 이름"


3. 커맨드 창에서 생성된 프로젝트 폴더 아래의 위치에서 프로젝트 생성

- "django-admin startproject mysite"


4. 커맨드 창에서 django_app3_kilogram/mysite/위치에서 앱 생성

- "python manage.py startapp kilogram"


5. settings.py에서 INSTALLED_APPS에 앱 이름 추가

- 이 때 주의할 점은 admin보다 위에 넣어줘야 됨.

- 여러가지 이유가 있으나 아직은 뭔 이유인지 모르겠음.

INSTALLED_APPS = [
'kilogram'
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]

6. settings.py에서 LANGUAGE_CODE, TIME_ZONE 수정

LANGUAGE_CODE = 'ko-kr'

TIME_ZONE = 'Asia/Seoul'

7. settings.py에서 static파일 경로 추가

- 아마 collectstatic을 실행했을 때 폴더가 생기는 위치를 지정해주는거 같음.

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

8. 커맨드 창에서 migrate실행.

- "python manage.py migrate"

9. 커맨드 창에서 superuser생성

- "python manage.py createsuperuser"

- 아이디, 이메일, 패스워드 순으로 입력


10. kilogram폴더 밑에 urls.py새로 생성하기

- 이 방식이 바로 Including another URLconf 방식이고, 이 방식을 사용해야 다른 앱들과 합칠 때 쉬워진다.

- 원래 있던 파일을 그대로 복붙해와서 url을 아래와 같이 수정한다.

- namespace 입력

- views import

- FunctionView 방식대신에 GenericView를 사용하면 구현이 쉬우므로 여기서는 GenericView를 이용한 방법 사용.

from django.conf.urls import url
from django.contrib import admin
from . import views

app_name = 'kilogram'

urlpatterns = [
url(r'^$', views.IndexView.as_view(), name='index'),
]

11. mysite/urls.py도 수정

- include로 킬로그램의 urls연결.

- include 모듈 import

- 메인페이지를 킬로그램 앱의 index로 설정해줌.

- kilogram의 views 모듈 import

from django.conf.urls import url, include
from django.contrib import admin
from kilogram import views as kilogram_views

urlpatterns = [
url(r'^$', kilogram_views.IndexView.as_view(), name='root'),
url(r'^admin/', admin.site.urls),
url(r'^kilogram/', include('kilogram.urls')),
]

12. views에 IndexView클래스 작성.

- 아무기능 없이 템플릿만 보여주는 뷰를 만들 것이므로 generic의 TemplateView를 상속받아 만든다.

from django.shortcuts import render
from django.views.generic.base import TemplateView

# Create your views here.

class IndexView(TemplateView): # 제네릭의 TemplateView는 아무기능 없이 템플릿만 표시해 주는 뷰에서 사용
template_name = 'kilogram/index.html'

13. kilogram폴더 밑에 templates폴더 생성, 그 아래 kilogram폴더 생성.


13-1. templates/kilogram/base.html생성

- load static, load staticfiles의 차이는 무엇인가? 나중에 찾아보자.

<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
<title>Kilogram</title>

<!-- Bootstrap -->
<link href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">

{% load staticfiles %}
<link rel="stylesheet" type="text/css" href="{% static 'kilogram/style.css' %}" />

<!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
<![endif]-->
</head>
<body>
<nav class="navbar navbar-default navbar-static-top">
<div class="container-fluid">
<!-- Brand and toggle get grouped for better mobile display -->
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="{% url 'kilogram:index' %}"> <span class="glyphicon glyphicon-camera"> </span> Kilogram </a>
</div>

<!-- Collect the nav links, forms, and other content for toggling -->
<div class="collapse navbar-collapse">
<ul class="nav navbar-nav navbar-right">
<li><a href="#"> <span class="glyphicon glyphicon-user"></span> Login</a></li>
<li><a href="#">Logout</a></li>
<li><a href="{% url 'admin:index' %}">Admin</a></li>
</ul>
</div><!-- /.navbar-collapse -->
</div><!-- /.container-fluid -->
</nav>
<div class="container">
<div>
{% block content %}
{% endblock %}
</div>
</div>
<!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<!-- Include all compiled plugins (below), or include individual files as needed -->
<script src="//maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
</body>
</html>

13-2. templates/kilogram/index.html생성

{% extends 'kilogram/base.html' %}
{% block content %}

<h1>Kilogram Main Page</h1>

{% endblock %}

14. kilogram폴더 밑에 static폴더 생성, 그 아래 kilogram폴더 생성.


14-1. static/kilogram/style.css생성

a {
color: green;
text-decoration: none;
}

14-2. "python manage.py collectstatic", "yes" 수행

- 정적파일을 한군데 모아주는 건 알겠는데 이걸 꼭 해줘야하는 타이밍은 나중에 배움.

- 배포할 때 알아야 하는 지식이라서 지금은 패스.


15. 실행

- "python manage.py runserver"


반응형
Comments