创建应用 python manage.py startapp myApp
激活应用:
1:在settings.py文件中,将myApp应用加入到 INSTALLED_APPS选项中
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'myApp',
]
2:定义模型
有一个数据表,就对应有一个模型
在models.py文件中定义模型,和数据库做交互 from django.db import models
模型类要继承 models.Model类
注意:
不需要定义主键,在生成时自动添加,并且值为自动增加
3:在数据库中生成数据表
生成迁移文件:执行 python manager.py makemigrations
此时在migrations目录下生成一个迁移文件,此时在数据库中还没生成数据表
执行迁移文件:执行 python manage.py migrate
4:测试数据操作
执行 python manage.py shell
引入一下包
from myApp.models import Grades,Students
from django.utils import timezone
from datetime import *
1、查询所有数据 类名.objects.all() Grades.objects.all()
2、添加数据 本质:创建一个模型类的对象实例
grade1 = Grade()
grade1.gname = "python04"
grade1.gdate = datetime(year=2020,month=12,dat=10)
grade1.ggirlnum = 3
grade1.gboynum = 10
将对象保存到数据库中
grade1.save()
3、查看每个对象 类名.objects.get(pk=2)
Grades.objects.get(pk=2) pk是id
4、修改对象 模型对象.属性=新值
grade2.gboynum=666
grade2.save()
5、删除数据 模型对象.delete() 注意这是物理删除,数据库中的表里的数据被删掉了
6、关联对象
grade1 = Grades.objects.get(pk=1)
stu = Students()
stu.sname = "鲁俨"
stu.sgender = False
stu.sage = 29
stu.scontend = "我是运维"
stu.sgrade = grade1
stu.save()
获得关联对象的集合 对象名.关联的类名小写.set.all()
grade1.students_set.all()
创建对象,属于python04班
stu3 = grade1.students_set.create(sname="韩颖",sage="30",sgender=False
scontend="我开奔驰上班") 不需要stu3.save()
7、启动服务器
python manage.py runserver ip:port
ip如果是本机是本机,可以不写,端口号默认是8000
说明:这是一个纯python写的轻量级web服务器,而且仅仅在开发测试中使用
真正项目上线
8、amdin站点管理
内容发布: 负责添加、修改、删除内容(针对的是数据库里面的数据)
配合Admin应用: 在settings.py文件中的INSTALLED_APPS中添加django.contrib.admi默认已经添加好的
创建管理员用户: python manage.py createsuperuser 依次输入用户名 邮箱 密码 luyan/qwer1234
9、汉化
修改setting.py LANGUAGE_CODE = 'zh-Hans' TIME_ZONE = 'Asia/Shanghai'
10、管理数据表 修改admin.py
自定义管理页面:
1----列表页属性
# list_display 显示表里面字段
# list_filter 过滤字段
# search_fields 搜索字段
# list_per_page 分页
2----添加、修改页属性
# fields 属性的先后顺序
# fieldsets 给属性分组
注意:fields 与 fieldsets 不能同时使用
11: 关联对象
需求:在创建一个班级时可以直接添加几个学生
class StudentsInfo(admin.TabularInline): #或者继承 admin.StackedInline
model = Students
extra = 2
class GradesAdmin(admin.ModelAdmin):
#在创建一个班级的时候,需顺带创建2个学生
inlines = [StudentsInfo]
布尔值显示问题:
def gender(self):
if self.sgender:
return "男"
else:
return "女"
#设置页面列的名称
gender.short_description = "性别"
执行动作的位置
actions_on_bottom = True
actions_on_top = False
12、视图的基本使用
在django中,视图对web请求进行回应
视图就是一个python函数,在view.py文件中定义
def index (request):
return HttpResponse("苏宁消费金融devops平台")
配置url:
修改django目录下的url.py文件
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^',include('myApp.urls')),
]
先在myAPP应用目录下,创建一个urls.py文件
from django.conf.urls import url
from . import views
urlpatterns = [
url(r'^$', views.index)
]
13、模板的基本使用
模板是html页面,可以根据视图中传递过来的数据进行填充
创建模板: 在Django目录下创建对应项目的模板目录 Django/templates/myApp
配置模板路径:修改settings.py文件下的TEMPLATES
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'templates')],
'APP_DIRS': True,
}
定义 grades.html和 students.html模板
模板语法:{{输出值,可以是变量,也可以是对象.属性}} {%执行代码段%}
http://127.0.0.1:8000/grades
1---------先写grades.html students.html 模板
2---------定义视图
3---------配置url url(r'^grades/$',views.grades),
14、点击班级,显示对应班级的学生
1-----首先定义视图
def gradesStudents(request,num):
#获得对应的班级对象
grade = Grades.objects.get(pk=num)
#获得班级下所有学生的对象列表
studentsList = grade.students_set.all()
return render(request,'myAPP/students.html',{"students":studentsList})
2---配置url
url(r'^grades/(\d+)$',views.gradesStudents),
3---修改grades.html
<a href="{{ grade.id }}">{{ grade.gname }}</a>