[django] 개발 과정.

2017. 2. 7. 15:36·Development/Django

원본 : https://www.inflearn.com/course-status-2/


프로젝트 & app 생성

django-admin startproject tutorials .

python manage.py startapp community


디렉토리 구조 확인

manage.py

tutorials/

community/


관리자 페이지 확인

auth, admin 기본 데이터베이스 생성

python manage.py migrate

슈퍼유저 생성(통상은 admin)

python manage.py createsuperuser

웹서버 실행(default : 127.0.0.1:8000)

python manage.py runserver

접속 확인

http://localhost:8000

http://localhost:8000/admin/

settings.py 수정

INSTALLED_APPS : 'community',

community app 사용 가능.


글쓰기

데이터베이스 생성

community/models.py 수정

from django.db import models


# Create your models here.

class Article(models.Model):

    name = models.CharField(max_length=50)

    title = models.CharField(max_length=50)

    contents = models.TextField()

    url = models.URLField()

    email = models.EmailField()

    cdate = models.DateTimeField(auto_now_add=True)

데이터베이스에 생성

python manage.py makemigrations community    ==== 변화 여부 확인

python manage.py migrate    === 실제 데이터베이스 생성


tutorials/urls.py 수정

from community.views import *

url(r'^write/', write, name='write'),


community/views.py 수정

def write(request):

  return render(request, 'write.html')


community/templates 폴더 생성

write.html 생성

<!DOCTYPE html>

<html lang="en">

<head>

  <meta charset="UTF-8">

  <title>write</title>

</head>

<body>

  write page.

</body>

</html>


community/forms.py 생성

from django.forms import ModelForm

from community.models import *


class Form(ModelForm):

    class Meta:

        model = Article

        fields = ['name', 'title', 'contents', 'url', 'email']

community/views.py에 write 함수에 form 연결.

def write(request):

    form = Form()

    return render(request, 'write.html', {'form':form})

write.html에서 form 사용하기
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>write</title>
</head>
<body>
  <form action="" method="post">
    {{ form.as_p }}
    {% csrf_token %}            === 이거 안하면 폼은 만들어지나, 저장할때 error. 폼 태그 통해 공격 가능해서.
    <button type="submit" class="btn btn-primary">저장</button>
  </form>
</body>
</html>

views.py 수정. 저장하면 POST로 처리하고 저장하고,  POST가 아니면 빈 폼 생성

def write(request):

    if request.method == 'POST':

        form = Form(request.POST)

        if form.is_valid():

            form.save()

    else:

        form = Form()


    return render(request, 'write.html', {'form':form})

저장까지 된다.

리스트

    url(r'^list/', list, name='list'),


def list(request):

    articleList = Article.objects.all()

    return render(request, 'list.html', {'articleList':articleList})


<!DOCTYPE html>

<html lang="en">

<head>

  <meta charset="UTF-8">

  <title>list</title>

</head>

<body>

  <ul>

    <li>제목 : 저자 : 날짜</li>

  {% for article in articleList %}

    <li><a href="/view/{{article.id}}">{{ article.title }}</a> | {{ article.name }} | {{ article.cdate|date:"D d M Y " }}</li>

  {% endfor %}

  </ul>

</body>

</html>



글 보기

    url(r'^view/(?P<num>[0-9]+)/$', view),

숫자가 몇개 반복될 수 있고 num으로 받는다.


def view(request, num="1"):

    article = Article.objects.get(id=num)        ==== id로 1개만 찾는다.

    return render(request, 'view.html', {'article':article})


template/view.html

<!DOCTYPE html>

<html lang="en">

<head>

  <meta charset="UTF-8">

  <title>view</title>

</head>

<body>

  제 목 : {{ article.title }}

  <br>

  저 자 : {{ article.name }}

  <br>

  내 용 : {{ article.contents }}

  <br>

  Email : {{ article.email }}

  <br>

</body>

</html>


이렇게 하면 간단하게 게시물이 출력되는 걸 볼 수 있다.



'Development > Django' 카테고리의 다른 글

[Django REST Framework] Tutorial  (0) 2017.03.11
[Django REST framework]Quickstart  (0) 2017.03.09
'Development/Django' 카테고리의 다른 글
  • [Django REST Framework] Tutorial
  • [Django REST framework]Quickstart
phpdoumi
phpdoumi
리눅스부터 인공지능까지 하나씩 해 보고 과정을 정리하자.
  • phpdoumi
    AI 세상 ?
    phpdoumi
  • 전체
    오늘
    어제
    • 분류 전체보기 (102)
      • Currents (0)
        • 2024.1 with Ubuntu 24.04 (0)
        • 2024.1 with Ubuntu 22.04 (0)
        • Groupware (0)
        • Spring Boot (0)
        • 스프링부트 + JPA + thymeleaf + S.. (0)
      • Cloud (6)
        • Yoga with Ubuntu 22.04 (0)
        • Ussuri with Ubuntu 20.04 (0)
        • Stein for Ubuntu 18.04 (0)
        • Queens (0)
        • RDO_Tech (0)
        • IBM Cloud private (0)
        • 교육 (0)
        • Pike release (0)
        • Ocata release (0)
        • Ocata for Ubuntu 16.04(w ce.. (0)
        • 도입절차 (0)
        • Newton for Ubuntu 16.04(w c.. (0)
        • Newton for Ubuntu 16.04(w c.. (0)
        • Newton For Ubuntu 16.04 (0)
        • Mitaka for Ubuntu 14.04(w c.. (0)
        • Liberty on Ubuntu 14.04 (0)
        • Mitaka ubuntu 14.04 (0)
        • AutoPilot (0)
        • Etc (5)
        • Mitaka (1)
        • Liberty (0)
      • Trend 기술 (5)
        • BlockChain (0)
        • AI (1)
        • Raspberry PI & Arduino (0)
        • Big Data (1)
        • Mobile (0)
        • Tensorflow (0)
        • Nutanix (1)
        • SDN (0)
        • 3D Printing (1)
        • pfsense (0)
        • BTS (0)
      • Docker&Container (2)
        • Core OS (1)
        • Docker (1)
      • Development (14)
        • bbgo (0)
        • Ansible (0)
        • ofbiz (0)
        • React (0)
        • UML Designer (0)
        • Django (3)
        • react-admin (0)
        • VSCode (0)
        • Vue.js (3)
        • Yona (0)
        • Shopping Mall (0)
        • Python (0)
        • Genkins (0)
        • 개발 환경 구축 (6)
        • Locallibrary (Python) (0)
      • 행복한경영이야기 (63)
      • Linux (6)
        • Open Source (5)
        • Ubuntu (0)
        • RedHat (0)
      • Todo (2)
      • 먹을거리 (4)
      • 관심거리 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 미디어로그
    • 위치로그
    • 방명록
  • 링크

    • 모바일경제연구소
    • CIO 코리아
    • itworld
    • dbguide.net
    • techm
    • splunk install
    • 끊임없이
    • yO Kang(GitHub)
    • [오픈소스컨설팅]엔터프라이즈 오픈소스 도입전략
    • Cloud Test Report(Mirantis)
    • git 한글 문서
    • grooveyou
    • Minsky Installation
    • 누구나 쉽게 이해할 수 있는 Git 입문
    • Tacademy
    • TAEWAN.KIM
  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
phpdoumi
[django] 개발 과정.
상단으로

티스토리툴바