StoryCode

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 파일에 접근할 계정 생성

설치

참조) https://ssungkang.tistory.com/entry/Django-01-%EA%B8%B0%EB%B3%B8%ED%99%98%EA%B2%BD%EC%85%8B%ED%8C%85-%EA%B0%80%EC%83%81%ED%99%98%EA%B2%BD-%EB%A7%8C%EB%93%A4%EA%B8%B0?category=320582

 

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

참조) https://ssungkang.tistory.com/entry/Django-02-Django-%EC%8B%9C%EC%9E%91-Hello-World-%EC%B6%9C%EB%A0%A5?category=320582

 

 

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가 된다.

]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

단어수 세는 프로그램

참조) https://ssungkang.tistory.com/entry/Django-03-%EB%8B%A8%EC%96%B4-%EC%88%98-%EC%84%B8%EB%8A%94-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8?category=320582

 

 

참고)

아래 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 %}

 

 

 

 

 

 

 

필터

# 참조 : https://django-doc-test-kor.readthedocs.io/en/old_master/ref/templates/builtins.html#ref-templates-builtins-filters

 

{{ 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}

 

 

 

 

 

 

 

태그

# 참조 : https://django-doc-test-kor.readthedocs.io/en/old_master/ref/templates/builtins.html#ref-templates-builtins-tags

 

 

 

 

 

 

 

 

 

 

명령문

{% 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