DJango (Windows)
Python, 파이썬
터미널 | 명령 | 결과 | |
1 | Terminal ( git bash ) $ | mkdir proejctname code proejctname |
프로젝트용 폴더 생성 VisualCode 로 proejctname 오픈 |
2 | VSC Terminal ( powershell ) $ 단축키 : Ctrl + ` (VSC > View > Terminal ) |
python -m venv myvenv | 가상환경 생성됨. |
3 | VSC Terminal ( git bash ) $ | source myvenv/Scripts/activate | (venv) 진입 |
4 | VSC Terminal ( git bash, venv ) $ | pip install django pip install pylint-django |
venv 를 생성후, venv내에 프로젝트에 적합한 개발환경인 django 구축. |
5 | VSC Terminal ( git bash, venv ) $ | django-admin startproject myproject | myproject 라는 "django 프로젝트" 생성 그 아래 myproject 폴더와 manage.py 생성 |
6 | VSC Terminal ( gitbash, venv ) myproject $ | python manage.py startapp myapp | 프로젝트내에 앱이 만들어 진다. 여러 앱을 만들수 있으나 단일앱으로 해본다. 앱을 프로젝트 연결 : myproject/myproject/settings.py 의 INSTALLED_APPS 에 myapp.apps.MyappConfig추가 ( 추가 규칙 : '{app이름}.apps.{app이름(맨 앞이 대문자)}Config') = myapp/apps.py 의 class 명임. |
7 | VSC Terminal ( gitbash, venv ) my project $ | mkdir myapp/templates | settings.py > TEMPLATES > DIRS 에 os.path.join(BASE_DIR, '/templates'), 추가 |
8 | VSC Terminal ( git bash, venv ) my project $ | python manage.py runserver | http://127.0.0.1:8000 으로 장고 접속 가능 |
9.1 | VSC Terminal ( git bash, venv ) my project $ | python manage.py makemigrations | settings.py > DATABASES 에 있는 NAME 으로 "빈 DB 파일" 을 생성 (sqlite3) |
9.2 | VSC Terminal ( git bash, venv ) my project $ | python manage.py migrate | 9.1의 빈 DB 파일에 실제 Meta Table과 Table 생성 |
9.3 | VSC Terminal ( git bash, venv ) my project $ | python manage.py createsuperuser | 9.2 DB 파일에 접근할 계정 생성 |
설치
1. git-scm.com 에서 git 설치후, 시작메뉴에서 git bash 실행
2. 가상 환경용 디렉토리 생성 (0000-000,Project.Dev.Repository\Dev.Django\)
gitbash$ mkdir Django
gitbash$ mkdir Django/venvproject
gitbash$ cd Django
3.vscode 사용 편의를 위해 "$ code 프로젝트폴더명" 를 실행할 수 있도록 하면 편한데,
vscode 설치후, 환경변수 PATH에 "Microsoft VS Code" 디렉토리를 추가하면 된다.
4.vscode 실행
gitbash$ code venvproject/
5.python 설치
Ctrl + Shift + X 를 눌러서 Python 을 검색후 설치한다.
6.Shell 추가
Ctrl + Shift + P 를 눌러서, Terminal: Select Default Shell 을 입력후, Git Bash 를 선택한다.
Menu > Terminal > New Terminal 을 클릭하면, bash 를 선택할 수 있게 된다.
( 반드시 새 터미널을 열어야 한다 )
7.가상환경생성
vscode menu > Terminal > New Terminal 를 클릭한뒤,
terminal 1:powershell> python3 -m venv myvenv 실행. ( myvenv 는 사용자가 자유로이 명명. VSCode 왼쪽 EXPLORER>VENVPROJECT>myvenv 가 생성되니 눈으로 확인 )
8.가상환경 실행
terminal 2:gitbash> source myvenv/Scripts/activate 실행
명령 실행후 프롬프트에 (myvenv) 가 앞에 나와야 한다.
source 문장을 실행했는데, "cmdlet, 함수, 스크립트..." 라는 오류가 발생하면, https://itinerant.tistory.com/63 참조
혹은 위 6번 다시 참조.
9.django 설치
(myvenv) $ pip install django
Hello, World
1. Project 만들기
django-admin startproject myproject
cd myproject
2. 서버 실행
python manage.py runserver
3. http 접속해서 확인 가능
http://127.0.0.1:8000/
4. 앱생성
python manage.py startapp myapp
- myproject프로젝트에 myapp 폴더가 생성됨
- 앱을 프로젝트와 연결해줘야 함
myproject/myproject/settings.py
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'myapp.apps.MyappConfig'
]
의 INSTALLED_APPS 에 myapp.apps.MyappConfig추가 ( 추가 규칙 : '{app이름}.apps.{app이름(맨 앞이 대문자)}Config')
- 디렉토리 연결 :
myproject/myproject/settings.py
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, '/templates'),],
5. 화면에 보여질 html 파일과 views.py 에 home.html 함수 만들기
- myapp에 templates 라는 디텍토리를 만들고 필요한 만큼, templates 디렉토리안에 home.html 을 만든다.
myapp/templates/home.html
<h1>Hello World </h1>
myapp/views.py
from django.shortcuts import render
def home(request):
return render(request, 'home.html')
6. url 연결.
- url 로 접근시, views.py 에 있는 함수를 실행시키고, 그 함수가 html 파일을 띄워준다.
myprojects/urls.py에 추가할 내용
import myapp.views
urlpatterns = [
path('', myapp.views.home, name='home'), // 참고 : '' 면 http://127.0.0.1:8080/ root가 된다.
]
단어수 세는 프로그램
참고)
아래 urls.py 의 path 중 name='home' 에 적힌 부분은,
그 아래 있는 about.html 의 <a href="{%url 'home'%}"> 에서 사용된다.
#urls.py
urlpatterns = [
path('admin/', admin.site.urls),
path('', wordcount.views.home, name='home'),
path('about/', wordcount.views.about, name='about'),
]
#about.html
<h1>ABOUT 페이지</h1>
<p>글자 수를 셀 수 있는 페이지입니다.</p>
<a href="{%url 'home'%}">HOME</a> <= urls.py 의 path 에 정의된 name 이다.
# views.py
from django.shortcuts import render
from django.shortcuts import render
def home(request):
return render(request, 'home.html')
def about(request):
return render(request, 'about.html')
def result(request):
full = request.GET['fulltext']
words = full.split()
words_dic = {}
for word in words:
if word in words_dic:
words_dic[word] += 1
else:
words_dic[word] = 1
return render(request, 'result.html', {'full':full,'length':len(words),'dic':words_dic.items()})
#result.html
<h1>총 단어 수:</h1>
<a href="{%url 'home'%}">HOME</a><br/>
<h2>입력한 텍스트 : </h2>
{{full}} <= views.py 에서 result 함수내 return 문장에 적힌 full 을 의미한다.
<h2>단어 카운트 : </h2>
{% for key,value in dic %}
{{key}} : {{value}}
<br/>
{% endfor %}
필터
{{ value|add:"2" }} => Ex> "value = 4, add 2" == 6
{{ first|add:second }} => Ex> "first = {1,2,3}, add second={4,5,6}" == {1,2,3,4,5,6}
태그
명령문
{% for blog in blog_list %}
{{ blog.title }}
{ % endfor %}
{% if blog_list %}
게시물의 수 : {{ blog_list | length }}
{% else %}
게시물이 없습니다.
{% comment %} {% endcomment %}
템플릿
# base.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>{% block title %}{% endblock%}</title>
</head>
<body>
{% block content %}{% endblock %}
</body>
</html>
# extens 로 상속받는다.
# 아래 baseball 문장이 위 템플릿에 들어가게 된다.
# baseball.html
{% extends "base.html" %}
{% block title %}basketball{% endblock %}
{% block content %}
<!-- 농구기사들을 내용으로 넣으면 될 것입니다. -->
{% endblock %}
Model 과 Admin ( Admin 전용 BLOG 글 추가 )
# https://ssungkang.tistory.com/entry/Django-04-model-%EA%B3%BC-admin?category=320582
# DJango Administration UI 가 있음.
# 이 파트는 디비 연동하는 부분이 일반적이지 않아서 일단 스킵하고, 아래 사용자 전용 글 쓰기 파트 참조
# models.py
class Blog(modesl.Model):
title = models.CharField(max_length = 200)
pub_date = models.DateField('date published')
body = models.TextField()
# settings.py
DATABASES = {
...
}
python manage.py makemigrations
python manage.py migrate
python manage.py createsuperuser
'Python, 파이썬' 카테고리의 다른 글
Django Rest FrameWork (0) | 2020.02.07 |
---|---|
기본문법 (0) | 2020.02.06 |
설치.DJango + Redis + Celery (0) | 2020.01.29 |
설치.Windows10.Request Module (0) | 2019.08.06 |
Reference (0) | 2018.12.03 |