Hcode网站已经正式运行,本网站由Himit_ZH和Howie协同合作搭建,网站的主旨是“记录编程技术,实现在线功能”
这部分我们将建立数据库,创建数据模型,并主要关注 Django 提供的自动生成的管理页面。
为了创建实际的项目,我们需要将文章信息保存至mysql数据库。Django默认使用SQLite数据库,所以我们需要在配置文件中修改默认数据库。
COPY# Database
# https://docs.djangoproject.com/en/1.11/ref/settings/#databases
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', # 选择mysql作为默认数据库
'NAME': '', # 数据库名
'USER': '', # 用户名
'PASSWORD': '', # 密码
'HOST': '', # 服务器地址
'PORT': '3306', # 端口
'OPTIONS': {'charset': 'utf8'},
}
}
现在,我们来定义模型model,模型本质上就是数据库表的布局,再附加一些元数据。
我们先来创建一个简单的文章模型:编辑应用中的models.py。具体方法如下:
COPYfrom django.db import models
from django.utils.timezone import now
# Create your models here.
class Article(models.Model):
"""文章模型"""
id = models.AutoField(primary_key=True)
title = models.CharField('标题', max_length=, unique=True)
author = models.CharField('作者', max_length=, blank=True, null=True)
pub_time = models.DateTimeField('发布时间', blank=False,
null=False, default=now)
body = models.TextField('正文')
status = models.BooleanField('是否发表', default=True)
每一个类都必须继承django.db.models.Model
类。每一个字段都是Field
类的一个实例,例如用于保存字符数据的CharField和用于保存时间类型的DateTimeField,它们告诉Django每一个字段保存的数据类型。其中max_length
定义字符类型的最大长度,null
和 blank
定义字段是否可为空,default
定义字段的默认值。
为了将模型应用到数据库中,我们需要在终端执行以下命令。
COPYpython manage.py makemigrations
python manage.py migrate
之后你会在终端中看到类似以下输出:
COPYOperations to perform:
Apply all migrations: admin, auth, contenttypes, article, sessions
Running migrations:
Rendering model states... DONE
Applying article.0001_initial... OK
我们打开数据库,发现数据库中多了刚刚创建的表和一些Django默认的表,创建成功。
光定义好数据表模型还是不够的。如果只是用sql语句来操作数据库,会有很多不便之处。所以我们需要给后台管理人员提供相应的管理界面。Django最大的优点之一,就是体贴的为你提供了一个基于项目model创建的一个后台管理站点admin。可以方便的对数据表进行增删改查操作。
首先,我们需要通过下面的命令,创建一个可以登录admin站点的用户:
COPYpython manage.py createsuperuser
输入用户名:
COPYUsername: xxx
输入邮箱地址:
COPYEmail address: xxx@xxx.xxx
输入密码:
COPYPassword: **********
Password (again): *********
Superuser created successfully.
注意:超级用户的密码要求具备一定的复杂性,如果密码强度不够,Django会提示你,但是可以强制通过。
服务器启动后,在浏览器访问http://127.0.0.1:8000/admin/
。你就能看到admin的登陆界面了:
利用刚才建立的admin账户,登陆admin,你将看到如下的界面:
当前只有两个可编辑的内容:用户和组。它们是django.contrib.auth
模块提供的身份认证框架。
现在还无法看到刚刚创建的Article应用,必须先在admin中进行注册,告诉admin站点,请将Article的模型加入站点内,接受站点的管理。
打开admin.py
文件,加入下面的内容,注意要先导入刚刚创建的模型类:
COPYfrom django.contrib import admin
from .models import Article
# Register your models here.
admin.site.register(Article)
注册Article模型后,刷新admin页面就能看到Article栏目了。
simpleui 是django admin的一个主题 是一个基于element-ui+vue开发,重写和优化90%以上的页面。 与suit是同类产品。我们是一个更符合国人审美和使用习惯的一个主题。
COPYpip install django-simpleui
用pip或者源码方式安装simpleui后,在自己项目的settings.py文件中INSTALLED_APPS的第一行加入simpleui
举个例子:
COPY # Application definition
INSTALLED_APPS = [
'simpleui',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
...
]
COPYpython3 manage.py collectstatic
COPYSTATIC_ROOT = os.path.join(BASE_DIR, "static")
下篇文章将介绍如何使用Ajax技术实现对静态网页动态统计阅读量