[6주차-2] Django wirte 게시판 만들기

ka02·2023년 10월 24일

cloudcamp

목록 보기
14/15

tutorial 만들기

  • vmware에서 ubuntu 환경에서 Django 작업

(이전에 만든 mysite에서 나가서 /home/song에서 작업 시작)

  1. django-admin startproject tutorial
    (ls하면 tutorial 이 보임)
  2. cd tutorial 로 이동해서
    ./manage.py startapp community
    (여기서 만약 python 찾을 수 없다는 오류 나오면 sudo apt install python-is-python3 설치하기)
  3. ./manage.py startapp community
  4. tree

  1. vi manage.py 확인
    vi manage.py 첫줄에 python을 python3으로 변경해줌(환경변수) 근데 위에 sudo로 python is python3 설치했으면 별도로 할 필요x
#!/usr/bin/env python
"""Django's command-line utility for administrative tasks."""
import os
import sys


def main():
    """Run administrative tasks."""
    os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'tutorial.settings')
    try:
        from django.core.management import execute_from_command_line
    except ImportError as exc:
        raise ImportError(
            "Couldn't import Django. Are you sure it's installed and "
            "available on your PYTHONPATH environment variable? Did you "
            "forget to activate a virtual environment?"
        ) from exc
    execute_from_command_line(sys.argv)


if __name__ == '__main__':
    main()
  1. ./manage.py migrate
    이후에 ls 해보면 db.sqlite3가 나와야 한다.

  2. vi tutorial/settings.py 수정

ALLOWED_HOSTS = ['*']


# Application definition
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'community',
]

TIME_ZONE = 'Asia/Seoul'
  1. ./manage.py createsuperuser
    root, a@b.cm, 1234로 만들었음
  2. vi 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)
  1. ./manage.py makemigrations community
    위에 수정사항이 있었으니까 make migration으로 적용하기
  2. vi tutorial/urls.py 수정
from django.contrib import admin
from django.urls import path, include
#from django.conf.urls import include, url
from community.views import *

urlpatterns = [
    path('admin/', admin.site.urls),
    path('write/', write, name='write'),
    path('list/', list, name='list'),

// 그렇지만 15번처럼 처음부터 url 만들어도 될듯 
  1. vi community/views.py 수정

    from django.shortcuts import render
    from community.forms import *
    
    # Create your views here.
    
    def write(request):
        form = Form()
        context = {"form":form}
        return render(request, 'write.html', context)
  2. mkdir community/templates

  3. vi community/templates/write.html 작성

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>write</title>
</head>
<body>
    <form action="" method="post">
        {% csrf_token %}
        {{ form.as_p }}
        <button type="submit" class="btn btn-primary">저장</button>
    </form>
</body>
</html>
  1. vi tutorial/urls.py 수정
from django.contrib import admin
from django.urls import path, include
#from django.conf.urls import include, url
from community.views import *

urlpatterns = [
    path('admin/', admin.site.urls),
    path('write/', write, name='write'),
    path('list/', list, name='list'),
    path('view/<int:num>/', view, name='view'),
  1. vi 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']

  • 이외 참고사항: vi coummunity/views.py 에서 아래 내용도 수정해보기
from django.shortcuts import render
from community.forms import *

# Create your views here.

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

0개의 댓글