장고로 간단한 게시 양식 만들기
13373 단어 양식양식장고학습TemplateView
개요
Django TemplateView
에서 "사용자가 게시 할 수있는 양식 화면"을 구현하고 싶습니다.
이번에는 제목과 메모를 게시하는 양식입니다. (게시판 같은)
환경은 python 3.7.3
및 django 2.2
입니다.
1. 프로젝트 생성
1-1. 우선 프로젝트 파일을 만들고 싶으므로 아래 명령으로 디렉토리를 만듭니다.
terminal$ mkdir simpleform
1-2. 그런 다음 simpleform
라는 프로젝트를 만듭니다. 마지막 .
은 정확하므로 그대로 실행하십시오. (디렉토리가 simpleform
인지 확인하십시오)
terminal~simpleform$ django-admin startproject formproject .
1-3. 명령을 실행하면 simpleform
디렉토리에 다음과 같이 파일이 생성됩니다.
simpleform/simpleform
├── formproject
│ ├── __init__.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
└── manage.py
2. 애플리케이션 만들기
2-1. 새롭게 어플리케이션을 작성하고 싶으므로, 다음의 커멘드를 실행합니다. 이번에는 formapp
라는 응용 프로그램입니다.
terminal$ python manage.py startapp formapp
실행하면 디렉토리는 아래와 같이 된다고 생각합니다.
3개로 나누면 simpleform
라는 프로젝트 파일 내에 ① formapp
라는 애플리케이션, ② formproject
라는 프로젝트, ③ manage.py
파일이 됩니다.
simpleform/simpleform
├── formapp
│ ├── __init__.py
│ ├── admin.py
│ ├── apps.py
│ ├── migrations
│ │ └── __init__.py
│ ├── models.py
│ ├── tests.py
│ └── views.py
├── formproject
│ ├── __init__.py
│ ├── __pycache__
│ │ ├── __init__.cpython-37.pyc
│ │ └── settings.cpython-37.pyc
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
└── manage.py
2-2. formproject
의 settings.py
의 INSTALLED_APPS
에 formapp
를 추가합니다.
formproject/settings.pyINSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
#追加
'formapp',
]
2-3. form
및 게시물 목록 list
을 볼 수 있도록 TEMPLATES
도 설정합니다. DIRS
에 [BASE_DIR, 'templates'
를 추가합니다.
formproject/settings.pyTEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
#追加
'DIRS': [BASE_DIR, 'templates'],
#ここまで
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
3. Form을 표시하자
3-1. 먼저 formproject/urls.py
에 다음과 같이 추가하십시오.
formproject/urls.pyfrom django.contrib import admin
#includeを追加
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
#追加
path('', include('formapp.urls')),
]
3-2. formapp
에 urls.py
파일을 새로 만들고 아래 코드를 추가합니다. 이제 https://サイト名.com/form
로 이동하면 form
가 표시되고 https://サイト名.com/list
로 이동하면 게시 목록 list
가 표시됩니다.
formapp/urls.pyfrom django.urls import path
from .views import FormClass, ListClass
urlpatterns = [
path('form/', FormClass.as_view(), name='form'),
path('list/', ListClass.as_view(), name='list'),
]
3-3. 나중에 form.html
및 list.html
파일에 액세스 할 수 있도록 코드를 views.py
에 추가하십시오.
formapp/views.pyfrom django.views.generic import ListView, CreateView
from django.urls import reverse_lazy
from .models import PostModel
class ListClass(ListView):
template_name = 'list.html'
model = PostModel
class FormClass(CreateView):
template_name = 'form.html'
model = PostModel
fields = ('title','memo')
success_url = reverse_lazy('list')
3-4. views.py
에 상속하는 모델의 models.py
는, 아래와 같이 작성해 주세요.
formapp/models.pyfrom django.db import models
class PostModel(models.Model):
title = models.CharField(max_length=50)
memo = models.TextField()
3-5. templates
폴더를 simpleform
에 새로 만듭니다. 그 안에 form.html
와 list.html
를 신규 작성해, 아래와 같이 해 주세요.
simpleform/templates/form.html<form method="POST">
{% csrf_token %}
<p>タイトル:<input type="text" name="title"></p>
<p>メモ:<input type="text" name="memo"></p>
<input type="submit" value="投稿する">
</form>
simpleform/templates/list.html<div class="container">
{% for post in object_list %}
<div class="post">
<p>タイトル:{{ post.title }}</p>
<p>メモ:{{ post.memo }}</p>
<p>--------------------</p>
</div>
{% endfor %}
<div class="form">
<a href="{% url 'form' %}">新規投稿</a>
</div>
</div>
디렉토리는 다음과 같아야합니다.
simpleform/simpleform
├── formapp
│ ├── __init__.py
│ ├── admin.py
│ ├── apps.py
│ ├── migrations
│ │ └── __init__.py
│ ├── models.py
│ ├── tests.py
│ ├── urls.py
│ └── views.py
├── formproject
│ ├── __init__.py
│ ├── __pycache__
│ │ ├── __init__.cpython-37.pyc
│ │ └── settings.cpython-37.pyc
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
├── manage.py
└── templates
├── form.html
└── list.html
3-6. 마지막으로 다음 명령을 실행하십시오.
terminal$ python manage.py migrate
4. localhost 시작
4-1. localhost를 시작하고 form
와 list
가 표시되는지 확인하려면 runserver
를 실행하십시오.
terminal$ python manage.py runserver
4-2.http://localhost:8000/form를 브라우저에서 열면 이러한 양식이 표시됩니다.
① 시험에 쓰기를 하고 「투고한다」를 눌러 보세요.
② 그렇게 하면, 투고 일람이 표시됩니다.
③마지막으로 「신규 투고」를 누르고, 똑같이 투고해 보면...
... 제대로 게시할 수 있습니다!
이와 같이 투고 화면과 일람 표시가 동작하고 있으면, 올바르게 실행할 수 있습니다.
이상
Reference
이 문제에 관하여(장고로 간단한 게시 양식 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/frosty/items/52a6d41c721c77a18e81
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
1-1. 우선 프로젝트 파일을 만들고 싶으므로 아래 명령으로 디렉토리를 만듭니다.
terminal
$ mkdir simpleform
1-2. 그런 다음
simpleform
라는 프로젝트를 만듭니다. 마지막 .
은 정확하므로 그대로 실행하십시오. (디렉토리가 simpleform
인지 확인하십시오)terminal
~simpleform$ django-admin startproject formproject .
1-3. 명령을 실행하면
simpleform
디렉토리에 다음과 같이 파일이 생성됩니다.simpleform/
simpleform
├── formproject
│ ├── __init__.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
└── manage.py
2. 애플리케이션 만들기
2-1. 새롭게 어플리케이션을 작성하고 싶으므로, 다음의 커멘드를 실행합니다. 이번에는 formapp
라는 응용 프로그램입니다.
terminal$ python manage.py startapp formapp
실행하면 디렉토리는 아래와 같이 된다고 생각합니다.
3개로 나누면 simpleform
라는 프로젝트 파일 내에 ① formapp
라는 애플리케이션, ② formproject
라는 프로젝트, ③ manage.py
파일이 됩니다.
simpleform/simpleform
├── formapp
│ ├── __init__.py
│ ├── admin.py
│ ├── apps.py
│ ├── migrations
│ │ └── __init__.py
│ ├── models.py
│ ├── tests.py
│ └── views.py
├── formproject
│ ├── __init__.py
│ ├── __pycache__
│ │ ├── __init__.cpython-37.pyc
│ │ └── settings.cpython-37.pyc
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
└── manage.py
2-2. formproject
의 settings.py
의 INSTALLED_APPS
에 formapp
를 추가합니다.
formproject/settings.pyINSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
#追加
'formapp',
]
2-3. form
및 게시물 목록 list
을 볼 수 있도록 TEMPLATES
도 설정합니다. DIRS
에 [BASE_DIR, 'templates'
를 추가합니다.
formproject/settings.pyTEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
#追加
'DIRS': [BASE_DIR, 'templates'],
#ここまで
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
3. Form을 표시하자
3-1. 먼저 formproject/urls.py
에 다음과 같이 추가하십시오.
formproject/urls.pyfrom django.contrib import admin
#includeを追加
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
#追加
path('', include('formapp.urls')),
]
3-2. formapp
에 urls.py
파일을 새로 만들고 아래 코드를 추가합니다. 이제 https://サイト名.com/form
로 이동하면 form
가 표시되고 https://サイト名.com/list
로 이동하면 게시 목록 list
가 표시됩니다.
formapp/urls.pyfrom django.urls import path
from .views import FormClass, ListClass
urlpatterns = [
path('form/', FormClass.as_view(), name='form'),
path('list/', ListClass.as_view(), name='list'),
]
3-3. 나중에 form.html
및 list.html
파일에 액세스 할 수 있도록 코드를 views.py
에 추가하십시오.
formapp/views.pyfrom django.views.generic import ListView, CreateView
from django.urls import reverse_lazy
from .models import PostModel
class ListClass(ListView):
template_name = 'list.html'
model = PostModel
class FormClass(CreateView):
template_name = 'form.html'
model = PostModel
fields = ('title','memo')
success_url = reverse_lazy('list')
3-4. views.py
에 상속하는 모델의 models.py
는, 아래와 같이 작성해 주세요.
formapp/models.pyfrom django.db import models
class PostModel(models.Model):
title = models.CharField(max_length=50)
memo = models.TextField()
3-5. templates
폴더를 simpleform
에 새로 만듭니다. 그 안에 form.html
와 list.html
를 신규 작성해, 아래와 같이 해 주세요.
simpleform/templates/form.html<form method="POST">
{% csrf_token %}
<p>タイトル:<input type="text" name="title"></p>
<p>メモ:<input type="text" name="memo"></p>
<input type="submit" value="投稿する">
</form>
simpleform/templates/list.html<div class="container">
{% for post in object_list %}
<div class="post">
<p>タイトル:{{ post.title }}</p>
<p>メモ:{{ post.memo }}</p>
<p>--------------------</p>
</div>
{% endfor %}
<div class="form">
<a href="{% url 'form' %}">新規投稿</a>
</div>
</div>
디렉토리는 다음과 같아야합니다.
simpleform/simpleform
├── formapp
│ ├── __init__.py
│ ├── admin.py
│ ├── apps.py
│ ├── migrations
│ │ └── __init__.py
│ ├── models.py
│ ├── tests.py
│ ├── urls.py
│ └── views.py
├── formproject
│ ├── __init__.py
│ ├── __pycache__
│ │ ├── __init__.cpython-37.pyc
│ │ └── settings.cpython-37.pyc
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
├── manage.py
└── templates
├── form.html
└── list.html
3-6. 마지막으로 다음 명령을 실행하십시오.
terminal$ python manage.py migrate
4. localhost 시작
4-1. localhost를 시작하고 form
와 list
가 표시되는지 확인하려면 runserver
를 실행하십시오.
terminal$ python manage.py runserver
4-2.http://localhost:8000/form를 브라우저에서 열면 이러한 양식이 표시됩니다.
① 시험에 쓰기를 하고 「투고한다」를 눌러 보세요.
② 그렇게 하면, 투고 일람이 표시됩니다.
③마지막으로 「신규 투고」를 누르고, 똑같이 투고해 보면...
... 제대로 게시할 수 있습니다!
이와 같이 투고 화면과 일람 표시가 동작하고 있으면, 올바르게 실행할 수 있습니다.
이상
Reference
이 문제에 관하여(장고로 간단한 게시 양식 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/frosty/items/52a6d41c721c77a18e81
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
$ python manage.py startapp formapp
simpleform
├── formapp
│ ├── __init__.py
│ ├── admin.py
│ ├── apps.py
│ ├── migrations
│ │ └── __init__.py
│ ├── models.py
│ ├── tests.py
│ └── views.py
├── formproject
│ ├── __init__.py
│ ├── __pycache__
│ │ ├── __init__.cpython-37.pyc
│ │ └── settings.cpython-37.pyc
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
└── manage.py
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
#追加
'formapp',
]
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
#追加
'DIRS': [BASE_DIR, 'templates'],
#ここまで
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
3-1. 먼저
formproject/urls.py
에 다음과 같이 추가하십시오.formproject/urls.py
from django.contrib import admin
#includeを追加
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
#追加
path('', include('formapp.urls')),
]
3-2.
formapp
에 urls.py
파일을 새로 만들고 아래 코드를 추가합니다. 이제 https://サイト名.com/form
로 이동하면 form
가 표시되고 https://サイト名.com/list
로 이동하면 게시 목록 list
가 표시됩니다.formapp/urls.py
from django.urls import path
from .views import FormClass, ListClass
urlpatterns = [
path('form/', FormClass.as_view(), name='form'),
path('list/', ListClass.as_view(), name='list'),
]
3-3. 나중에
form.html
및 list.html
파일에 액세스 할 수 있도록 코드를 views.py
에 추가하십시오.formapp/views.py
from django.views.generic import ListView, CreateView
from django.urls import reverse_lazy
from .models import PostModel
class ListClass(ListView):
template_name = 'list.html'
model = PostModel
class FormClass(CreateView):
template_name = 'form.html'
model = PostModel
fields = ('title','memo')
success_url = reverse_lazy('list')
3-4.
views.py
에 상속하는 모델의 models.py
는, 아래와 같이 작성해 주세요.formapp/models.py
from django.db import models
class PostModel(models.Model):
title = models.CharField(max_length=50)
memo = models.TextField()
3-5.
templates
폴더를 simpleform
에 새로 만듭니다. 그 안에 form.html
와 list.html
를 신규 작성해, 아래와 같이 해 주세요.simpleform/templates/form.html
<form method="POST">
{% csrf_token %}
<p>タイトル:<input type="text" name="title"></p>
<p>メモ:<input type="text" name="memo"></p>
<input type="submit" value="投稿する">
</form>
simpleform/templates/list.html
<div class="container">
{% for post in object_list %}
<div class="post">
<p>タイトル:{{ post.title }}</p>
<p>メモ:{{ post.memo }}</p>
<p>--------------------</p>
</div>
{% endfor %}
<div class="form">
<a href="{% url 'form' %}">新規投稿</a>
</div>
</div>
디렉토리는 다음과 같아야합니다.
simpleform/
simpleform
├── formapp
│ ├── __init__.py
│ ├── admin.py
│ ├── apps.py
│ ├── migrations
│ │ └── __init__.py
│ ├── models.py
│ ├── tests.py
│ ├── urls.py
│ └── views.py
├── formproject
│ ├── __init__.py
│ ├── __pycache__
│ │ ├── __init__.cpython-37.pyc
│ │ └── settings.cpython-37.pyc
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
├── manage.py
└── templates
├── form.html
└── list.html
3-6. 마지막으로 다음 명령을 실행하십시오.
terminal
$ python manage.py migrate
4. localhost 시작
4-1. localhost를 시작하고 form
와 list
가 표시되는지 확인하려면 runserver
를 실행하십시오.
terminal$ python manage.py runserver
4-2.http://localhost:8000/form를 브라우저에서 열면 이러한 양식이 표시됩니다.
① 시험에 쓰기를 하고 「투고한다」를 눌러 보세요.
② 그렇게 하면, 투고 일람이 표시됩니다.
③마지막으로 「신규 투고」를 누르고, 똑같이 투고해 보면...
... 제대로 게시할 수 있습니다!
이와 같이 투고 화면과 일람 표시가 동작하고 있으면, 올바르게 실행할 수 있습니다.
이상
Reference
이 문제에 관하여(장고로 간단한 게시 양식 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/frosty/items/52a6d41c721c77a18e81
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
$ python manage.py runserver
Reference
이 문제에 관하여(장고로 간단한 게시 양식 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/frosty/items/52a6d41c721c77a18e81텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)