前言

学习web开发是一条艰辛的道路,那些令人讨厌的前端页面总是需要我们复制粘贴、复制粘贴,一旦修改,经常要同时修改多个文件。

页面做的最多的地方无疑是后台管理部分,一个模块,基本就要做出一套页面,比如:

增加内容页面 编辑内容页面(和增加内容的页面大部分内容相同) 内容列表页面(里面还要考虑筛选、搜索功能的实现)

做这些页面做多了,难免心生厌烦,比如我用什么thinkphp,一直要复制n套模版,编辑html,替换一些名称什么的,完全就是苦力活。

所以,为了减少这些重复的劳动,Django替我们实现了一个管理后台,能够对我们设计的模型自动生成管理页,且不需要编写html,这听起来很美好,然而这就是事实。

人生苦短,我用Python(Django)!

操作环境

系统:*nix(Ubuntu、OS X,Windows No! No! No!)

软件:python3、django、pycharm

安装环境

安装Django前需要安装python3,我们使用包管理软件安装:

(Windows用户请到python官网下载execute installer,这就是不推荐Windows的原因)

1234567# Ubuntu,好像自带python3,没有的话就执行这个吧sudo apt install python3# OS X,使用brew安装,没有brew请执行以下命令/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"# 安装python3brew install python3

当python3安装完成后,在bash中就可以使用pip3进行python3的包管理了。

(Windows需要配置环境变量,execute installer可以在安装时选add to path。)

12# 安装djangopip3 install django

至此Django就安装完成了。

新建项目

打开终端,在work space(工作空间)下,执行以下命令:

12# mysite为新建的站点的名称,可自定义。django-admin startproject mysite

创建完成后,项目结构如下所示。

1234567mysite/ manage.py mysite/ __init__.py settings.py urls.py wsgi.py

最外层的mysite是无关紧要的,随时可以重命名,不影响运行。

manage.py,项目的管理器,作用跟django-admin一致。

mysite/settings.py,项目的配置文件,调试、语言、时区等设置在此配置。

mysite/urls.py,定义了url与各模块之间的关联。

mysite/wsgi.py,用于部署到apache等web服务器上,由于纯Python环境亦可运行,小项目并不需要理会这个。

新建模块

打开终端,cd到项目目录下,执行以下命令:

12# user是我们将要新建的模块(应用)名称python3 manage.py startapp user

执行命令后生成的文件如下所示:

123456789user/ migrations/ __init__.py __init__.py admin.py apps.py models.py tests.py views.py

migrations,这个目录用于存储自动生成的模型脚本。

__init__.py,这两个文件为空,在Python里,目录下包含__init__.py就是把目录定义为包。

admin.py,用于将你定义的模型注册到管理平台。

apps.py,疑似用于作为配置文件。

models.py,用于定义你的模型。

test.py,用于编写测试代码。

views.py,用于定义视图。

设计模型

我们现在完成了用户模块(应用)的创建,但这个模块还是空的,我们现在来设计个账号模型。

账号的基本要素,登录名,密码。

以下为user/models.py:

12345678from django.db import models# Create your models here.class Account(models.Model): login = models.CharField(max_length=32) password = models.CharField(max_length=32)

模型设计完成了,还需要在后台对其进行管理,所以我们把这个模型注册到管理系统:

以下为user/admin.py:

123456789101112from django.contrib import adminfrom .models import *# Register your models here.class AccountAdmin(admin.ModelAdmin): list_display = ('login', 'nick')admin.site.register(Account, AccountAdmin) 自动化配置

emmmmm,也许你现在在疑惑,怎么不用配置数据库?难道写几行python就能做到数据的存储?数据要去哪里查看?

其实Django也是需要配置数据库的,但Django实现了数据库的自动化建表(当时令我眼前一亮),其他地方也与传统的网站开发相差无几。

Django默认使用sqlite3,这是一个轻型的数据库,以文件的形式存储,不需要登陆到数据库主机什么的,小型项目最佳选择,甚至连配置都不用。

注册模块(应用)

当我们要自动配置数据库时,首先要把应用注册到当前站点的配置文件,这样django的管理器才会帮你生成这个应用下的数据表。

我们把user模块添加到INSTALLED_APPS list里就OK了,修改如下文件:

以下为mysite/settings.py的片段:

123456789101112131415# ...其它代码...# Application definitionINSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'user',]# ...其它代码... 生成数据库

我们已经把模块注册好了,接下来就要生成其数据表了,执行以下命令:

1234# 生成自动生成数据表脚本python3 manage.py makemigrations# 执行自动生成python3 manage.py migrate

至此,数据库已经自动生成好了,默认位置是在项目目录下的db.sqlite3,你可以使用sqlite3的数据库管理软件进行打开,对其进行查看。

自动生成的数据库

你可以选择sqlite3以外的数据库,如mysql等等,不过需要另外进行配置,这个日后再谈,个人感觉小项目并不需要更换数据库。

登陆后台

数据库也生成好了,现在已经迫不及待的想要进入后台了吧。

首先我们要启动服务器,执行以下命令:

12# 如果你使用的是pycharm,直接点右上角的运行就可以了。python3 manage.py runserver 8000

然后你可以通过http://localhost:8000/admin进行访问后台。

创建管理员

如果你现在打开了后台,你会发现,你没有账号,没法登陆233333333333。

来来来,创建一个,执行以下命令:

12# 创建超级用户python3 manage.py createsuperuser

现在你就可以登陆了,登陆成功的话,如下图:

管理后台页面-1

管理后台页面-2

管理后台页面-3

管理后台页面-4

是不是很棒?自动帮你做好了管理页,虽然有点丑,不过无所谓,后台不是给用户看的。

补充

写完之后发现忘了一个地方,那就是settings.py的基本设置。

123456789# Internationalization# https://docs.djangoproject.com/en/1.11/topics/i18n/# LANGUAGE_CODE的设置可以参考django.conf.locale下面的目录名。LANGUAGE_CODE = 'zh-Hans'# 时区请参考以下页面的TZ列。# https://en.wikipedia.org/wiki/List_of_tz_database_time_zonesTIME_ZONE = 'Asia/Shanghai' 总结

简单的说,我现在看到的Django就是这样,能帮你解决很多繁琐的问题,后台做得很完善,虽然风格跟中国这边的设计差得远了,起码不用我去整数据库,这一部分就正中我红心了,而且让我接触到了sqlite这轻型数据库,我才知道原来数据库还能这么简单。

以后有空我会继续写Django的文章。