Part2:模型与管理后台

一、数据库安装

  mysite/settings.py配置文件,这是整个Django项目的设置中心,Django默认使用SQLite数据库,因为Python原生支持SQLite数据库,无序安装任何程序,就可以直接使用,当然创建一个实际项目,可以使用类似PostgreSQL的数据库,避免迁移问题。

1.Django自带的SQLite数据库,轻量级的

mysite/settings.py
# Database
# https://docs.djangoproject.com/en/1.11/ref/settings/#databases

DATABASES = {
    ‘default‘: {
        ‘ENGINE‘: ‘django.db.backends.sqlite3‘,
        ‘NAME‘: os.path.join(BASE_DIR, ‘db.sqlite3‘),
    }
}

  如果你想使用其他的数据库,请先安装相应的数据库操作模块,并将settings文件中DATABASES位置的"default"的键值进行相应的修改,用于连接你的数据库。

2.使用其他数据库在settings配置

# mysite/settings.py

# Database
# https://docs.djangoproject.com/en/1.11/ref/settings/#databases

import pymysql         # 一定要添加这两行!通过pip install pymysql!
pymysql.install_as_MySQLdb()
DATABASES = {
‘default‘: {
    ‘ENGINE‘: ‘django.db.backends.mysql‘, # 使用的数据库
    ‘NAME‘: ‘mysite‘,
    ‘HOST‘: ‘192.168.1.1‘, # 路由
    ‘USER‘: ‘root‘, # 数据库的用户名
    ‘PASSWORD‘: ‘pwd‘, # 数据库密码
    ‘PORT‘: ‘3306‘, # 端口,Mysql默认是3306端口
    }
}

ENGINE(引擎):

django.db.backends.sqlite3、
django.db.backends.postgresql、
django.db.backends.mysql、 # 常用数据库
django.db.backends.oracle,
其他也可以

NAME(名称)

  类似Mysql数据库管理系统中用于保存项目内容数据库的名字。如果使用的是默认的SQLite,那么数据库将作为一个文件将存放在你的本地机器内,此时NAME应该是这个文件的完整绝对路径包含文件名,默认值:os.path.join(BASE_DIR, ’db.sqlite3’),将该文件储存在你的项目目录下

  如果不适用默认的SQLite数据库,那么一些诸如USER,PASSWORD和HOST的参数必须手动指定!按照上述进行修改

注意:

  修改时区:找到settings文件,将TIME_ZONE设置为国内所在的时区:Asia/Shanghai

  默认情况,INSTALLED_APPS中会自动包含下列条目,他们都是Django自动创建的

django.contrib.admin:admin管理后台站点
django.contrib.auth:身份认证系统
django.contrib.contenttypes:内容类型框架
django.contrib.sessions:会话框架
django.contrib.messages:消息框架
django.contrib.staticfiles:静态文件管理框架

二、创建模型

  Django通过自定义Python类的形式来定义具体的模型,每个模型的物理存在方式就是一个Python的类Class,每个模型代表数据库中的一张表,每个类的实例代表数据表中的一行数据,类中的每个变量代表数据表中的一列字段。Django通过模型,将Python代码和数据库操作结合起来,实现对SQL查询语言的封装。也就是说,你可以不会管理数据库,可以不会SQL语言,你同样能通过Python的代码进行数据库的操作。Django通过ORM对数据库进行操作,奉行代码优先的理念,将Python程序员和数据库管理员进行分工解耦。

创建两个模型

class Question(models.Model):
    """
    创建问题表
    """
    # 问题字段
    question_text = models.CharField(max_length=200)
    # 发布时间
    pub_date = models.DateTimeField("date published")

class Choice(models.Model):
    """
    文章表
    """
    # 关联问题表
    question = models.ForeignKey(Question, on_delete=models.CASCADE)
    # 创建文章描述
    choice_text = models.CharField(max_length=200)
    # 创建投票数 default:默认从0开始
    votes = models.IntegerField(default=0)

  上面的代码非常简单明了。每一个类都是django.db.models.Model的子类。每一个字段都是Field类的一个实例,例如用于保存字符数据的CharField和用于保存时间类型的DateTimeField,它们告诉Django每一个字段保存的数据类型。

  每一个Field实例的名字就是字段的名字(如: questiontext 或者 pubdate )。在你的Python代码中会使用这个值,你的数据库也会将这个值作为表的列名。

  你也可以在每个Field中使用一个可选的第一位置参数用于提供一个人类可读的字段名,让你的模型更友好,更易读,并且将被作为文档的一部分来增强代码的可读性。

  一些Field类必须提供某些特定的参数。例如CharField需要你指定max_length。这不仅是数据库结构的需要,同样也用于数据验证功能。

  有必填参数,当然就会有可选参数,比如在votes里我们将其默认值设为0.

  最后请注意,我们使用ForeignKey定义了一个外键关系。它告诉Django,每一个Choice关联到一个对应的Question(注意要将外键写在‘多’的一方)。Django支持通用的数据关系:一对一,多对一和多对多。

三、启用模型

1.创建app对应的数据库表结构

2.为Question和Choice对象创建基于Python的数据库访问API

首先我们先告诉Django项目

  要将应用添加到项目中,需要在INSTALLEDAPPS设置中泽佳指向改应用的配置文件的连接,对于本列的投票应用,他的配置文件是polls/apps.py,路径各式为:polls.apps.PollsConfig,需要在INSTALLEDAPPS中,将改路径添加进去。

# mysite/settings.py

INSTALLED_APPS = [
‘django.contrib.admin‘,
‘django.contrib.auth‘,
‘django.contrib.contenttypes‘,
‘django.contrib.sessions‘,
‘django.contrib.messages‘,
‘django.contrib.staticfiles‘,
‘polls.apps.PollsConfig‘, # 添加app应用
]

现在Django已经知道你的投票应用的存在了,并把它加入了项目的大家庭中。

1.执行命令

python manage.py makemigrations 

会看到类似下面的提示

Migrations for ‘polls‘:
polls\migrations\0001_initial.py
- Create model Choice
- Create model Question
- Add field question to choice

  通过运行 makemigrations:命令,相当于告诉Django你对模型有改动,并且你想把这些改动保存为一个"迁移(migration)"。

  migrations:是Django保存模型修改记录的文件,这些文件保存在磁盘上,在本例子中,他是polls/migrations/001_initial.py。

  接下来有一个叫做migrate:的命令将对数据库执行真正的迁移动作,但是在此之前,先看看migration的时候实际执行的SQL语句是什么,执行如下

python manage.py sqlmigrate polls 0001

2.运行migrate命令,在数据库中进行真正的表操作

python manage.py migrate

  migrate命令对所有还未实施的迁移记录进行操作,本质上就是将对模型的修改体现到数据库中具体的表上面。Django通过一张djanog_migrations的表,记录并跟踪已经实施migrate动作。

  migrations的功能非常强大,允许你随时修改你的模型,而不需要删除或者新建你的数据库或数据表,在不丢失数据的同时,实时动态更新数据库。我们将在后面的章节对此进行深入的阐述,但是现在,只需要记住修改模型时的操作分三步

  运行python manage.py makemigrations为改动创建迁移记录。

  运行python manage.py migrate,将操作同步到数据库。

四、admin后台管理站点

1.创建管理员用户

创建一个可以登录admin站点的用户:

python manage.py createsuperuser

输入用户名:

Username:admin

输入邮箱地址:

Email address:输入邮箱

输入密码:

Password:
Password(again):
Superuser created successfully.

2.启动开发服务器

1>服务器启动后,在浏览器访问http://127.0.0.1:8000/admin/。你就能看到admin的登陆界面了:

2>打开根url路由文件mysite/urls.py,修改其中admin.site.urls对应的正则表达式,换成你想要的,比如:

from django.conf.urls import url
from django.contrib import admin

urlpatterns = [
    url(r‘^my/set/‘, admin.site.urls),
]

3.进入admin站点

  利用刚才建立的admin账户,登陆admin

4.在admin中注册投票应用

  现在还无法看到投票应用,必须先在admin中进行注册,告诉admin站点,请将polls的模型加入站点内,接受站点的管理。

  打开polls/admin.py文件,加入下面的内容:

from django.contrib import admin
from .models import Question

admin.site.register(Question)

ps:这里需要注意:

  • 页面中的表单是由Question模型自动生成的。
  • 不同的模型字段类型(DateTimeField, CharField)会表现为不同的HTML input框类型。
  • 每一个DateTimeField都会自动生成一个可点击链接。日期是Today,并有一个日历弹出框;时间是Now,并有一个通用的时间输入列表框。在页面的地步 ,则是一些可选项按钮
  • delete:弹出一个删除确认页面
  • save and add another:保存当前修改,并加载一个新的空白的当前类型对象的表单。
  • save and continue editing:保存当前修改,并重新加载该对象的编辑页面。
  • save:保存修改,返回当前对象类型的列表页面。

原文地址:https://www.cnblogs.com/xiaohei001/p/9675490.html

时间: 2024-10-29 19:05:14

Part2:模型与管理后台的相关文章

Part 2:模型与管理后台

接着第一部分,本节将讲述如何安装数据库,编写第一个模型以及简要的介绍下Django自动生成的后台管理admin站点. 一.数据库安装 打开mysite/settings.py配置文件,这是整个Django项目的设置中心.Django默认使用SQLite数据库,因为Python源生支持SQLite数据库,所以你无须安装任何程序,就可以直接使用它.当然,如果你是在创建一个实际的项目,可以使用类似PostgreSQL的数据库,避免以后数据库迁移的相关问题. # mysite/settings.py #

tornado项目之基于领域驱动模型架构设计的京东用户管理后台

本博文将一步步揭秘京东等大型网站的领域驱动模型,致力于让读者完全掌握这种网络架构中的“高富帅”. 一.预备知识: 1.接口: python中并没有类似java等其它语言中的接口类型,但是python中有抽象类和抽象方法.如果一个抽象类有抽象方法,那么继承它的子类必须实现抽象类的所有方法,因此,我们基于python的抽象类和抽象方法实现接口功能. 示例代码: from abc import ABCMeta from abc import abstractmethod #导入抽象方法 class F

【tornado】系列项目(二)基于领域驱动模型的区域后台管理+前端easyui实现

本项目是一个系列项目,最终的目的是开发出一个类似京东商城的网站.本文主要介绍后台管理中的区域管理,以及前端基于easyui插件的使用.本次增删改查因数据量少,因此采用模态对话框方式进行,关于数据量大采用跳转方式修改,详见博主后续博文. 后台界面展示: 地区管理包含省市县的管理.详见下文. 一.数据库设计 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 class Province(Base):  

微信小程序管理后台介绍

微信小程序的管理后台,每次进入都需要扫码,还是特别不爽,现在微信小程序还没正式发布,很多人都还没看到管理后台,这里抢先发布出来 ------------------------------------------------------------ http://www.cnblogs.com/likwo/p/6057258.html 好推小程序统计:https://weixin.hotapp.cn关键指标分析推广效果,一行代码接入微信登录 ---------------------------

基于H.ui.Admin UI模板的网站管理后台

最近接手一个跨境电商平台开发,客户侧重电商网站UI设计,对管理后台要求不高,由我们决定选哪一款后台模板.找来找去,感觉还是H.ui靠谱一些,主要是这个模板清爽,不需要过多选择.其他的流行后台模板也看了,但功能繁杂,选择起来很费劲,要花很多时间拆解. 所以,考虑到是外包项目,速度和效率第一,越快上手越好. 现在把几个效果图贴出来,与大家分享,欢迎指正:

学生成绩管理后台第二项任务:初步建模,搭建一个简单的网站

负责人:程琳茹 合伙人:李玉婷 签约员工:闫玉荣 前言:学生成绩管理后台,看起来是一个简单的项目,但是对于我们今后的发展很重要,建设一个管理后台有很多方法,这里我们主要使用Rstudio,在之后的文章中,会详细给出我们小组完成项目的过程与遇到的问题,欢迎大家借鉴,此外,同学们要积极参与讨论. 项目步骤:1.熟悉与安装Rstudio,并且配置好R内部环境. 2.建立好文件所存放的位置与确保文档可以正常使用. 3.搭建一个简单的网站,分别分为server.R端口与ui.R端口. 4.搭建好网站后,插

Python-S13作业-day4-之登陆,管理后台

Python-S13作业-day4-之登陆,管理后台 需求: 本节作业,用户管理程序:          普通用户: 登录,注册,修改密码,查看本用户信息 管理员用户: 查看所有普通用户,按照指定关键字搜索用户信息: 登录,注册,修改密码,查看本用户信息:                       删除.添加普通用户                       修改普通用户密码 提高普通用户权限 注意: 1.用户信息:要存文件里         2.权限验证,要用装饰器 思路: Readme:

【转】Solr安全设置——对外禁用管理后台

本文转自:http://www.devnote.cn/article/94.html 测试于:Solr 4.5.1, Jdk 1.6.0_45, Tomcat 6.0.37 | CentOS 5.7 Solr管理后台功能可谓强大,但是真正线上,如果管理后台地址可以公开访问的话,不但core的结构会暴漏出来,索引库甚至可以被修改或删除. 推荐的做法是,在apache或其他服务器上做设置,平时禁用对外的访问地址,项目访问solr的内网地址(如:http://localhost:8080/solr/c

管理后台的登录功能-重新思考

每个网站.APP都几乎必然有其管理后台,其中管理的内容则是公司的核心技术财产.而登录模块则是这扇大门,其安全的重要性可想而知.我们知道,功能越多,安全性就会越低,所以我们有必要重新审视一下,管理后台的登录界面到底需要些什么功能. 一.功能模块的取舍 1.基本的账号密码登录.这个无可避免是必然需要的了. 2.图片验证码.验证码的目的是为了阻止机器人暴力撞库,作为管理后台很有必要,而且是要每次登录请求都需重新验证. 3.填完用户名或密码时,Ajax实时验证.这个功能常见于一些自动管理后台的注册模块,