用Python编写的Web应用程序(Django)的简易教程(三)【应用程序创建和数据库设置篇】,适合初学者理解
解释文章的结构
1PythonのWebアプリケーション(Django)を初心者にもわかりやすく解説(1)【環境構築編】
2PythonのWebアプリケーション(Django)を初心者にもわかりやすく解説(2)【プロジェクト作成編】
3PythonのWebアプリケーション(Django)を初心者にもわかりやすく解説(3)【アプリケーション作成・DB設定編】←4PythonのWebアプリケーション(Django)を初心者にもわかりやすく解説(4)【ルーティング設定・MTVデザインパターン入門編】
5PythonのWebアプリケーション(Django)を初心者にもわかりやすく解説(5)【Django shellでDB操作入門編】
6PythonのWebアプリケーション(Django)を初心者にもわかりやすく解説(6)【MTVデザインパターン完成編】
开发环境
-
- OS: Mac OS Sierra (10.12)
- Python 3.5.2
我們將基於Mac的環境進行說話和進一步討論。
以下是确认Python版本的方式。
$ python3 --version
Python 3.5.2
创建应用程序
本次我们将从创建Django应用程序开始。
在这个项目中,我们将创建一个应用程序。
我们将根据Django Girls教程创建一个博客。
$ python3 manage.py startapp blog
以下是目录的结构安排。
myvenv
├── bin
├── blog
├── db.sqlite3
├── include
├── lib
├── manage.py
├── myapp
└── pyvenv.cfg
创建应用程序后,首先要进行设置文件的更改。
这是为了在Django上定义要使用的应用程序。
找到以下类似的代码,并在底部添加一个博客。
# Application definition
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'blog',
)
模型的建立
我们将创建一个用于在博客中使用的模型。
模型是一个方便的对象,可以存储数据。
这个模型本身也可以有方法,并且通过这个模型,我们可以处理与数据库的交互,而不用太过关注SQL等事项。
开始定义用于博客的模型。
打开blog/models.py文件,并按照以下内容进行修改。
from django.db import models
from django.utils import timezone
class Post(models.Model):
author = models.ForeignKey('auth.User')
title = models.CharField(max_length=200)
text = models.TextField()
created_date = models.DateTimeField(default=timezone.now)
published_date = models.DateTimeField(blank=True, null=True)
def publish(self):
self.published_date = timezone.now()
self.save()
def __str__(self):
return self.title
这里的解释可能会有点长,但只需要从 Django Girls 教程的说明中摘录以下部分。
类Post(models.Model):-这行定义了本次模型(即对象)。
class是用来定义对象的关键字。Post是模型的名称。类名以大写字母开头。
models.Model表示Post是Django模型,Django可以知道这是应该保存到数据库中的内容。
现在让我们定义一些属性:
title、text、created_date、published_date、author首先必须确定字段的类型。
文本?数字?日期?或与其他对象的关系,例如用户。models.CharField – 用于定义文本长度的字段。
models.TextField – 这是用于无限制长文本的字段。
models.DateTimeField – 日期和时间字段。
models.ForeignKey – 这是指向其他模型的链接。
看起来是在模型中声明使用的属性的类型。
以下是一个关于Ruby on Rails的附言。
$ rails g model post author title text
通过这样的声明,可以创建迁移文件,所以与它进行比较可能会有些麻烦。
完成模型的定义后,我们要创建迁移文件。
$ python3 manage.py makemigrations blog
Migrations for 'blog':
0001_initial.py:
- Create model Post
因此,Django会为了将数据存入数据库而为我们创建迁移文件,然后我们进行迁移。
$ python3 manage.py migrate blog
Operations to perform:
Apply all migrations: blog
Running migrations:
Rendering model states... DONE
Applying blog.0001_initial... OK
Post 模型已成功地被反映到数据库(SQLite)。
查询数据库
为了方便初学者,Django提供了通过浏览器GUI进行模型确认的功能。这个功能被称为Django admin。
首先,打开 blog/admin.py 文件,为刚才创建的 Post 模型更改 Django 管理界面配置。
from django.contrib import admin
from .models import Post
# Register your models here.
admin.site.register(Post)
设定已经完成了。
请启动服务器并从浏览器中访问Django管理界面(http://127.0.0.1:8000/admin)。
* 我建议您打开另一个终端,始终保持该服务器运行。
$ python3 manage.py runserver
如果顺利的话,您可以访问这个网页。
然而,登录页面已经显示出来了,您记得设置过吗?
当然没有啦,要登录的话需要另外创建一个超级用户(网站管理员)。
那么,让我们创建一个superuser吧。
$ python manage.py createsuperuser
Username (leave blank to use 'your_name'): admin
Email address: email@example.com # メールアドレスを個別に設定
Password: # パスワードを入力
Password (again): # パスワードをもう一度
Superuser created successfully.
你已经成功创建了superuser。
现在,再次访问Django admin(http://127.0.0.1:8000/admin),并尝试登录吧。
请使用刚刚创建的超级用户登录。
当您可以无障碍登录时,可以访问此类画面。
尽管我们之前将其声明为“Post”,但它会自动变为复数形式“Posts”。
推荐在这种情况下使用Python 3系列,因为在Python 2系列中会出现Unicode错误等问题。由于处理日语非常复杂,因此仅仅因为这类问题在Python 3系列中得到了改进,Python 3系列就非常实用。
现在数据库的确认已经完成。
以后如果想要确认数据库,请求助于Django admin。
现在可以通过这个来设置模型并将其反映到数据库中,以便进行确认。
下一步,我们将创建一个原始模板,并对View进行编辑,使其可用。
下一篇解说文章
这篇文章是关于如何简单易懂地解释Python的Web应用程序(Django)给初学者(第四部分)【路由设置和MTV设计模式入门】。
文献的参考资料
-
- Django
- Django Girls Tutorial「Djangoモデル」
奖品
期待你的关注!
-
- Qiita: Carat 吉崎
twitter:@carat_yoshizaki
はてなブログ:Carat COOのブログ
ホームページ:Carat
如果您对能够一站式学习数学、编程和Web应用的机器学习一对一家庭教师服务“科学学”感到兴趣,请随时与我们联系。