最近学习完廖雪峰的Python3教程,做完博客实战后,准备学习一下Django。由于使用的Django是2.1版本的,网上找了很多教程,最后发现还是官方的文档最靠谱。按照教程完成了第一个投票应用后,写个博客记录下,一是巩固一下自己的理解,二也希望通过写博客能督促自己学习,有一个学习的劲头。
新建项目
首先安装Django,可以略过。创建Django项目,我用的编译器是Pycharm,新建项目比较方便,但由于我使用的是anaconda,所以要注意选择Python解释器。
当然,也可以打开命令行,cd
到一个你想放置你代码的目录,然后运行以下命令:
django-admin startproject mysite
其自动创建的目录为:
mysite/
manage.py
mysite/
__init__.py
settings.py
urls.py
wsgi.py
最外层的:file:mysite/根目录只是你的项目的容器,Django不关心它的名字,可以将其重命名为任何你喜欢的名字,不过要避免使用Python或Django的内部保留名字。
manage.py:一个让你用各种方式管理Django项目的命令行工具。
里面一层的mysite/目录包含你的项目,是一个纯Python包。
__init__.py:告诉Python,这个目录是一个Python包。
setting.py:整个Django项目的配置文件,数据库连接、模板路径、时区设置等等。
urls.py:Django项目的URL声明,就像你的网站的“目录”。
wsgi.py:作为你的项目的运行在WSGI兼容的WEB服务器上的入口。
创建应用
终端下执行命令:
py manage.py startapp polls
将会在根目录下创建以下polls目录:
polls/
__init__.py
admin.py
apps.py
migrations/
__init__.py
models.py
tests.py
views.py
数据库及模型
Django使用SQLite作为默认数据库,如果你想使用基本不用修改配置文件。我用的是Mysql,首先需要自己创建一个数据库,这里注意要将编码集设为utf8,否则后期写入中文字符会失败。然后在setting.py中进行如下修改。
import pymysql # 导入pymysql
pymysql.install_as_MySQLdb()
...
# 为了在我们的工程中包含我们创建的应用,需要添加在INSTALLED_APPS中
INSTALLED_APPS = [
# 直接写polls也可以
'polls.apps.PollsConfig',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
...
# 数据库连接信息:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'db_mysite',
'HOST':'127.0.0.1',
'USER':'root',
'PASSWORD':'password',
'PORT':'3306',
}
}
...
...
TIME_ZONE = 'Asia/Shanghai' # 设置为当前时区
...
在models.py下创建模型,这里暂时我们只需要Question和Choice两个表。
from django.db import models
import datetime
from django.utils import timezone
class Question(models.Model):
question_text = models.CharField(max_length=200)
pub_date = models.DateTimeField('date publishe