前言
学习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.pymigrations,这个目录用于存储自动生成的模型脚本。
__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现在你就可以登陆了,登陆成功的话,如下图:
是不是很棒?自动帮你做好了管理页,虽然有点丑,不过无所谓,后台不是给用户看的。
补充写完之后发现忘了一个地方,那就是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的文章。