1. 安装Python

下载链接:https://www.python.org/getit/

我这边下载的是3.6.5的版本的执行版本,安装过程中选择自动安装pip

2.安装django

pip install Django==1.11

3.创建项目

django-admin startproject project

4.创建一个应用

先进入到创建的项目目录下,然后执行

python manage.py startapp myApp

目录结构如下:

django默认使用的数据库为sqlite3数据库,如果需要使用mysql数据库需要修改settings.py文件

DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'project20180504',
'USER':'root',
'PASSWORD':'root',
'HOST':'localhost',
'PORT':'',
}
}
ENGINE 表示数据库的引擎名称,
NAME 为数据库的名称
USER为数据库的用户名
PASSWORD为数据库用户名密码
HOST为IP
PORT为端口号 修改完毕后,需要用到mysql还需要在project\myApp\__init__.py文件中声名
import pymysql
pymysql.install_as_MySQLdb()
如果显示pymysql未安装,可以使用pip install pymsql安装 我这边安装pymysql时候报错提示需要升级pip到10.0.1
执行python -m pip install --upgrage pip 即可 。 创建数据:
修改myApp下的models.py文件
#coding=utf-8

from django.db import models

# Create your models here.

class Grades(models.Model):
gname=models.CharField(max_length=20)
gdate=models.DateTimeField()
ggilrnum=models.IntegerField()
gboynum=models.IntegerField()
isDelete=models.BooleanField(default=False)
def __str__(self):
return self.gname class Students(models.Model):
sname=models.CharField(max_length=20)
sgender=models.BooleanField(default=True)
sage=models.IntegerField()
scontend=models.CharField(max_length=20)
isDelete=models.BooleanField(default=False)
#关联外键
sgrade=models.ForeignKey("Grades")
def __str__(self):
return self.sname

定义了一个班级表,包含班级名称,创建日期,女生数目,男士数目,是否删除字段

定义了一个学生表,包含学生姓名,学生性别,学生年龄,学生介绍,是否删除,所属班级,其中所属班级关联外键 。

执行

python manage.py  makemigrations

将会生成迁移数据,在project\myApp\migrations\0001_initial.py文件中会生成如下内容

# -*- coding: utf-8 -*-
# Generated by Django 1.11 on 2018-05-04 12:31
from __future__ import unicode_literals from django.db import migrations, models
import django.db.models.deletion class Migration(migrations.Migration): initial = True dependencies = [
] operations = [
migrations.CreateModel(
name='Grades',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('gname', models.CharField(max_length=20)),
('gdate', models.DateTimeField()),
('ggilrnum', models.IntegerField()),
('gboynum', models.IntegerField()),
('isDelete', models.BooleanField(default=False)),
],
),
migrations.CreateModel(
name='Students',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('sname', models.CharField(max_length=20)),
('sgender', models.BooleanField(default=True)),
('sage', models.IntegerField()),
('scontend', models.CharField(max_length=20)),
('isDelete', models.BooleanField(default=False)),
('sgrade', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='myApp.Grades')),
],
),
]

此时进入mysql中查看发现表依然不存在,此时需要执行

python manage.pu migrate

此时会自动将数据表创建完毕 ,但是此时的数据表中是没用内容的。

测试数据:

使用django手动向数据表中增、删、改、查数据

首先进入python的shell环境中

python manage.py shell

首先导入包

from myApp.models import Grades,Students
from django.utils import timezone
from datetime import *

执行Grades.objects.all() 命令可以查看Grades中对象,此时为空,那么我们给它创建对象

grade1=Grades()

然后给对象的属性赋值

grade1.gname="python04"
grade1.gdate=datetime(year=2018,month=5,day=5)
grade1.ggilrnum=10
grade1.gboynum=30

此时对象中已经有数据,但是查询数据表发现表中还是空的,那是因为还需要执行grade1.save()命令将数据保存进去 。

grade1.save()

此时新增一个数据已经完成,按照这个方法可以添加多个对象 。

查询数据:使用如下命令可以查询第一条数据

Grades.objects.get(pk=1)

数据表中默认都有个id字段,并且这个字段是自动递增的,pk=1表示第一条记录,如果取所有的,那么使用Grades.objects.all()命令

但是显示的数据并不是很好看,可以通过修改myApp下的models.py文件的__str__(self)方法来定义输出格式,上面我们已经定义只输出名称,也可以定义输出其他内容 。

修改数据:

grade1.gboynum=100
grade1.save()

修改男士数目为100,然后保存,会发现数据表中数据已经发生变化

删除数据:

grade1.delete()  #物理删除

启动服务:

python manage.py runserver

创建超级用户

python manage.py createsuperuser

然后根据提示创建超级用户名密码。

创建完毕后登陆http://127.0.0.1:8000/admin 可以进入登陆界面

修改myApp下的admin.py文件:

#coding=utf-8
from django.contrib import admin # Register your models here. from .models import Grades,Students # class StudentsInfo() class GrandesAdmin(admin.ModelAdmin):
#列表属性
list_display = ['pk','gname','gdate','ggilrnum','gboynum','isDelete']
#过滤器
list_filter =['gname']
#按字段搜索
search_fields =['gname']
#分页
list_per_page =5 #添加,修改属性
#添加属性先后顺序
#fields = ['gname','ggilrnum','gboynum','gdate','isDelete']
fieldsets = [
("num",{"fields":['ggilrnum','gboynum']}),
("base",{"fields":['gname','gdate','isDelete']}),
] class StudentsAdmin(admin.ModelAdmin):
list_display = ['pk','sname','sgrade','sgender','sage','scontend','isDelete']
list_filter =['sname','sgrade']
search_fields =['sname']
list_per_page =10 fields = ['sname','sgrade','sgender','sage','scontend',]
#注册
admin.site.register(Grades,GrandesAdmin)
admin.site.register(Students,StudentsAdmin)

其中admin.site.register(Grades)和admin.site.register(Students) 可以将班级表和学生表注册进去,在界面上可以查看操作 。

上面的GrandesAdmin和StudentsAdmin则定义了增加,修改,查看数据的方式 。

效果如下:

列表属性,让数据显示存在标题 。

右边会存在一个过滤器,显示所有的班级名称

search_fields 会使之出现一个搜索框
分页属性则是当数据量超过定义的值是将分多页显示 。

fieldsets 则是将属性分组 。
fields则可以定义先后顺序,跟fieldsets 不可同时出现 。


 


 

最新文章

  1. QQ5.0左侧滑动显示效果
  2. Visual Studio 2012 Update 4 RC 启动调试失败解决方案
  3. [日常训练]常州集训day8
  4. c#枚举自定义,用于数据绑定。 z
  5. 强势解决:windows 不能在本地计算机中起动Tomcat参考特定错误代码1
  6. 进程环境之getrlimit和setrlimit函数
  7. Export功能 导致 页面显示很多非法字符,还可能页面显示两次
  8. Matlab界面语言切换,自由显示中文或英文语言
  9. ie 6 position fixed
  10. smarty模版使用php标签,获取模版变量!
  11. Atomic 升级
  12. PL/SQL + Oracle客户端 配置记录
  13. 【转】Spring AOP 实现之CGLIB
  14. [Swift]LeetCode63. 不同路径 II | Unique Paths II
  15. linux:644、755、777权限详解
  16. ajax请求封装函数
  17. 12.1-uC/OS-III调度的内部实现
  18. python函数传入参数(默认参数、可变长度参数、关键字参数)
  19. transform动画的一个3D的正方体盒子
  20. UML之Enterprise Architect使用

热门文章

  1. Java 文件上传中转
  2. 【lightoj-1063】Ant Hills(求割点)
  3. Java 面试/笔试题神整理 [Java web and android]
  4. Activity Process Task Application 专题讲解
  5. 嵌入式中 ARM的几种工作模式 以及异常模式的优先级
  6. C / C ++中的数组讲解
  7. kalman 滤波 演示与opencv代码
  8. flash游戏服务器安全策略
  9. c printf打印格式
  10. Java [Leetcode 383]Ransom Note