首次尝试学习Django(2.1.1)@第一部分

首先

    Python初心者がDjangoに入門してみた記録です

执行环境

    • Windows10

 

    • Python3.7

 

    Django2.1.1

教学

在看了以下的Qiita之后,我实际动手试了一下。
非常详细的解说,非常感激。非常感谢。

    Python Django入門 (3)

创建虚拟环境

C:\Apache24\htdocs>cd lesson-django
C:\Apache24\htdocs\lesson-django>python -m venv env1
C:\Apache24\htdocs\lesson-django>cd env1

(env1) C:\Apache24\htdocs\lesson-django\env1>
(env1) C:\Apache24\htdocs\lesson-django\env1>pip -V
pip 10.0.1 from c:\apache24\htdocs\lesson-django\env1\lib\site-packages\pip (python 3.7)

(env1) C:\Apache24\htdocs\lesson-django\env1>python -V
Python 3.7.0

(env1) C:\Apache24\htdocs\lesson-django\env1>python -m pip install -U pip
Collecting pip
  Using cached https://files.pythonhosted.org/packages/5f/25/e52d3f31441505a5f3af41213346e5b6c221c9e086a166f3703d2ddaf940/pip-18.0-py2.py3-none-any.whl
Installing collected packages: pip
  Found existing installation: pip 10.0.1
    Uninstalling pip-10.0.1:
      Successfully uninstalled pip-10.0.1
Successfully installed pip-18.0

安装Django

(env1) C:\Apache24\htdocs\lesson-django\env1>pip install django
Collecting django
  Downloading https://files.pythonhosted.org/packages/ca/7e/fc068d164b32552ae3a8f8d5d0280c083f2e8d553e71ecacc21927564561/Django-2.1.1-py3-none-any.whl (7.3MB)
    100% |████████████████████████████████| 7.3MB 555kB/s
Collecting pytz (from django)
  Using cached https://files.pythonhosted.org/packages/30/4e/27c34b62430286c6d59177a0842ed90dc789ce5d1ed740887653b898779a/pytz-2018.5-py2.py3-none-any.whl
Installing collected packages: pytz, django
Successfully installed django-2.1.1 pytz-2018.5

创建项目

(env1) C:\Apache24\htdocs\lesson-django\env1>django-admin.py startproject mybook

(env1) C:\Apache24\htdocs\lesson-django\env1>dir
 ドライブ C のボリューム ラベルは OS です
 ボリューム シリアル番号は 6027-7EAB です

 C:\Apache24\htdocs\lesson-django\env1 のディレクトリ

2018/09/21  23:00    <DIR>          .
2018/09/21  23:00    <DIR>          ..
2018/09/21  22:54    <DIR>          Include
2018/09/21  22:54    <DIR>          Lib
2018/09/21  23:01    <DIR>          mybook
2018/09/21  22:56                59 pip-selfcheck.json
2018/09/21  22:54                87 pyvenv.cfg
2018/09/21  22:57    <DIR>          Scripts
               2 個のファイル                 146 バイト
               6 個のディレクトリ  36,320,899,072 バイトの空き領域

(env1) C:\Apache24\htdocs\lesson-django\env1>cd mybook

(env1) C:\Apache24\htdocs\lesson-django\env1\mybook>dir
 ドライブ C のボリューム ラベルは OS です
 ボリューム シリアル番号は 6027-7EAB です

 C:\Apache24\htdocs\lesson-django\env1\mybook のディレクトリ

2018/09/21  23:01    <DIR>          .
2018/09/21  23:01    <DIR>          ..
2018/09/21  23:01               553 manage.py
2018/09/21  23:01    <DIR>          mybook
               1 個のファイル                 553 バイト
               3 個のディレクトリ  36,320,899,072 バイトの空き領域

(env1) C:\Apache24\htdocs\lesson-django\env1\mybook>dir mybook
 ドライブ C のボリューム ラベルは OS です
 ボリューム シリアル番号は 6027-7EAB です

 C:\Apache24\htdocs\lesson-django\env1\mybook\mybook のディレクトリ

2018/09/21  23:01    <DIR>          .
2018/09/21  23:01    <DIR>          ..
2018/09/21  23:01             3,208 settings.py
2018/09/21  23:01               769 urls.py
2018/09/21  23:01               405 wsgi.py
2018/09/21  23:01                 0 __init__.py
               4 個のファイル               4,382 バイト
               2 個のディレクトリ  36,320,768,000 バイトの空き領域

迁移

(env1) C:\Apache24\htdocs\lesson-django\env1\mybook>python manage.py migrate
Operations to perform:
  Apply all migrations: admin, auth, 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 sessions.0001_initial... OK

创建超级用户

(env1) C:\Apache24\htdocs\lesson-django\env1\mybook>python manage.py createsuperuser
ユーザー名 (leave blank to use 'sireline'): admin
メールアドレス: admin@example.com
Password:hogehoge
Password (again):hogehoge
このパスワードは一般的すぎます。
Bypass password validation and create user anyway? [y/N]: y
Superuser created successfully.

启动开发服务器

(env1) C:\Apache24\htdocs\lesson-django\env1\mybook>python manage.py runserver
Performing system checks...

System check identified no issues (0 silenced).
September 21, 2018 - 23:32:51
Django version 2.1.1, using settings 'mybook.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.
python manage.py runserver 0.0.0.0:8000

通过网络浏览器进行访问

    http://127.0.0.1:8000/
django-fig1.png

停止开发服务器

Ctrl+c

创建应用程序

(env1) C:\Apache24\htdocs\lesson-django\env1\mybook>python manage.py startapp cms

(env1) C:\Apache24\htdocs\lesson-django\env1\mybook>dir
 ドライブ C のボリューム ラベルは OS です
 ボリューム シリアル番号は 6027-7EAB です

 C:\Apache24\htdocs\lesson-django\env1\mybook のディレクトリ

2018/09/21  23:48    <DIR>          .
2018/09/21  23:48    <DIR>          ..
2018/09/21  23:48    <DIR>          cms
2018/09/21  23:27           131,072 db.sqlite3
2018/09/21  23:01               553 manage.py
2018/09/21  23:09    <DIR>          mybook
               2 個のファイル             131,625 バイト
               4 個のディレクトリ  36,300,689,408 バイトの空き領域

(env1) C:\Apache24\htdocs\lesson-django\env1\mybook>dir cms
 ドライブ C のボリューム ラベルは OS です
 ボリューム シリアル番号は 6027-7EAB です

 C:\Apache24\htdocs\lesson-django\env1\mybook\cms のディレクトリ

2018/09/21  23:48    <DIR>          .
2018/09/21  23:48    <DIR>          ..
2018/09/21  23:48                66 admin.py
2018/09/21  23:48                86 apps.py
2018/09/21  23:48    <DIR>          migrations
2018/09/21  23:48                60 models.py
2018/09/21  23:48                63 tests.py
2018/09/21  23:48                66 views.py
2018/09/21  23:48                 0 __init__.py
               6 個のファイル                 341 バイト
               3 個のディレクトリ  36,300,623,872 バイトの空き領域

模型的定义

from django.db import models

# Create your models here.
class Book(models.Model):
    """書籍"""
    name = models.CharField('書籍名', max_length=255)
    publisher = models.CharField('出版社', max_length=255, blank=True)
    page = models.IntegerField('ページ数', blank=True, default=0)

    def __str__(self):
        return self.name


class Impression(models.Model):
    """感想"""
    book = models.ForeignKey(Book, verbose_name='書籍', related_name='impressions', on_delete=models.CASCADE)
    comment = models.TextField('コメント', blank=True)

    def __str__(self):
        return self.comment

激活模型

# Application definition

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'cms', # 追加
]

创建我的迁移文件

(env1) C:\Apache24\htdocs\lesson-django\env1\mybook>python manage.py makemigrations cms
Migrations for 'cms':
  cms\migrations\0001_initial.py
    - Create model Book
    - Create model Impression

确认SQL命令

(env1) C:\Apache24\htdocs\lesson-django\env1\mybook>python manage.py sqlmigrate cms 0001
BEGIN;
--
-- Create model Book
--
CREATE TABLE "cms_book" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "name" varchar(255) NOT NULL, "publisher" varchar(255) NOT NULL, "page" integer NOT NULL);
--
-- Create model Impression
--
CREATE TABLE "cms_impression" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "comment" text NOT NULL, "book_id" integer NOT NULL REFERENCES "cms_book" ("id") DEFERRABLE INITIALLY DEFERRED);
CREATE INDEX "cms_impression_book_id_b2966102" ON "cms_impression" ("book_id");
COMMIT;

将数据应用到数据库中

(env1) C:\Apache24\htdocs\lesson-django\env1\mybook>python manage.py migrate cms
Operations to perform:
  Apply all migrations: cms
Running migrations:
  Applying cms.0001_initial... OK

登陆管理网站

服务器启动

(env1) C:\Apache24\htdocs\lesson-django\env1\mybook>python manage.py runserver

通过Web浏览器访问管理网站

    http://127.0.0.1:8000/admin/

登录

django-fig2.png
ユーザ名:admin
パスワード:hogehoge

显示管理网站

django-fig3.png

将模特注册到管理网站上

from django.contrib import admin
from cms.models import Book, Impression

# Register your models here.
admin.site.register(Book)
admin.site.register(Impression)

重新加载

可以在管理网站上进行编辑

    • CMS

Books
Impressions

django-fig4.png

给这本书增加一个画面

点击「添加图书」。

django-fig5.png
書籍名:ゼロから作るDeep Learning ――Pythonで学ぶディープラーニングの理論と実装
出版社:オライリー・ジャパン
ページ数:320

点击保存按钮后,会添加一本书。

书籍清单界面

django-fig6.png

图书编辑界面

django-fig7.png

自定义列表界面

from django.contrib import admin
from cms.models import Book, Impression

# Register your models here.
#admin.site.register(Book)
#admin.site.register(Impression)

class BookAdmin(admin.ModelAdmin):
    list_display = ('id', 'name', 'publisher', 'page',)
    list_display_links = ('id', 'name',)

admin.site.register(Book, BookAdmin)


class ImpressionAdmin(admin.ModelAdmin):
    list_display = ('id', 'comment',)
    list_display_links = ('id', 'comment',)
    raw_id_fields = ('book',)

admin.site.register(Impression, ImpressionAdmin)

定制后的书籍列表界面

django-fig8.png

最后总结&未来展望

    • CRUD操作が簡単に出来て、すごく便利!

公式サイトを見て、Djangoの全体像を把握する
最終的にはDBを、MySQLにしたい

广告
将在 10 秒后关闭
bannerAds