【CRUD】【Django】Python 프레임워크 Django를 사용해 CRUD 사이트를 작성한다~2~

시리즈 일람 (전 기사 완성하면 갱신해 갑니다)



모델 만들기



장고에는 ORM (객체 관계 매핑)이 있습니다.
ORM은 프로그램의 소스 코드와 데이터베이스의 데이터를 상호 변환하는 기능을 말합니다.
Django의 경우 modele.py에 Pythn으로 작성합니다.

그럼, Post(포스트 기능의) 모델을 써 갑니다.

/crud/blog/models.py
from django.db import models
from django.contrib.auth.models import User
from django.utils import timezone


class Post(models.Model):
    # タイトル CHAR 最大100文字
    title = models.CharField(max_length=100)
    # 内容 テキスト
    content = models.TextField()
    # 著者 外部キー制約(1対多リレーション) ユーザ 親データと共に子データも削除
    author = models.ForeignKey(User, on_delete=models.CASCADE)
    # 投稿日 日付型 現在時刻
    date_posted = models.DateTimeField(default=timezone.now)

    # 管理画面の表示設定 タイトルを表示
    def __str__(self):
        return self.title


마이그레이션


(crud-_w5mSGH2) C:\django\crud>python manage.py makemigrations
Migrations for 'blog':
  blog\migrations\0001_initial.py
    - Create model Post

(crud-_w5mSGH2) C:\django\crud>

다음 파일이 자동으로 생성됩니다.
편집할 필요가 없습니다.

/crud/blog/migrations/0001_initial.py
# Generated by Django 3.1.1 on 2020-10-12 12:32

from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
import django.utils.timezone


class Migration(migrations.Migration):

    initial = True

    dependencies = [
        migrations.swappable_dependency(settings.AUTH_USER_MODEL),
    ]

    operations = [
        migrations.CreateModel(
            name='Post',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('title', models.CharField(max_length=100)),
                ('content', models.TextField()),
                ('date_posted', models.DateTimeField(default=django.utils.timezone.now)),
                ('author', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
            ],
        ),
    ]

마이 그레이트


(crud-_w5mSGH2) C:\django\crud>python manage.py migrate
Operations to perform:
  Apply all migrations: admin, auth, blog, contenttypes, sessions
Running migrations:
  Applying contenttypes.0001_initial... OK
  Applying auth.0001_initial... OK
  Applying admin.0001_initial... OK
  Applying admin.0002_logentry_remove_auto_add... OK
  Applying admin.0003_logentry_add_action_flag_choices... OK
  Applying contenttypes.0002_remove_content_type_name... OK
  Applying auth.0002_alter_permission_name_max_length... OK
  Applying auth.0003_alter_user_email_max_length... OK
  Applying auth.0004_alter_user_username_opts... OK
  Applying auth.0005_alter_user_last_login_null... OK
  Applying auth.0006_require_contenttypes_0002... OK
  Applying auth.0007_alter_validators_add_error_messages... OK
  Applying auth.0008_alter_user_username_max_length... OK
  Applying auth.0009_alter_user_last_name_max_length... OK
  Applying auth.0010_alter_group_name_max_length... OK
  Applying auth.0011_update_proxy_permissions... OK
  Applying auth.0012_alter_user_first_name_max_length... OK
  Applying blog.0001_initial... OK
  Applying sessions.0001_initial... OK

(crud-_w5mSGH2) C:\django\crud>

데이터 등록



본래의 블로그라면 투고 화면에서 기사를 투고합니다만, 아직 구현하고 있지 않습니다.
Djngo에는 관리 화면이 있으며 거기에서 데이터를 등록할 수 있습니다.
그래서 일단 관리 화면에서 기사 데이터를 등록하려고합니다.

관리 화면에 게시물 표시



관리 화면에 표시시킬 내용을 Django에 알려야 합니다. 다음 파일을 수정합시다.

crud/blog/admin.py
from django.contrib import admin
from .models import Post

admin.site.register(Post)


관리 사용자 만들기



관리 화면에 로그인하기 위한 관리자 사용자를 생성합니다.
사용자: admin
비밀번호:pass
(crud-_w5mSGH2) C:\django\crud>python manage.py createsuperuser
ユーザー名 (leave blank to use 'wmgoz'): admin
メールアドレス: ***@***.com #←自分のメアドを使用してください
Password:
Password (again):
このパスワードは短すぎます最低 8 文字以上必要です
このパスワードは一般的すぎます
Bypass password validation and create user anyway? [y/N]: y
Superuser created successfully.

(crud-_w5mSGH2) C:\django\crud>

관리 화면에 로그인



개발 서버를 시작하고 관리 화면에 로그인합니다.
python manage.py runserver

그런 다음 관리 화면 "htp://127.0.0.1:8000/아d민/"에 액세스하십시오.

다음과 같은 관리 화면이 표시되었습니다.


데이터를 등록해 보세요!



관리 화면의 Posts 옆에 있는 + 추가를 클릭하여 데이터 입력으로 이동합니다.

데이터① 등록:


데이터② 등록:


두 기사의 게시가 완료되었습니다.


오늘은 여기까지 합니다. 고마워요.

좋은 웹페이지 즐겨찾기