首次尝试学习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/
停止开发服务器
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/
登录
ユーザ名:admin
パスワード:hogehoge
显示管理网站
将模特注册到管理网站上
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
给这本书增加一个画面
点击「添加图书」。
書籍名:ゼロから作るDeep Learning ――Pythonで学ぶディープラーニングの理論と実装
出版社:オライリー・ジャパン
ページ数:320
点击保存按钮后,会添加一本书。
书籍清单界面
图书编辑界面
自定义列表界面
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)
定制后的书籍列表界面
最后总结&未来展望
-
- CRUD操作が簡単に出来て、すごく便利!
公式サイトを見て、Djangoの全体像を把握する
最終的にはDBを、MySQLにしたい