Django 菜鸟教程(跑通流程)
Django 教程
- 一、Django 安装
- 1、Django 版本对应的 Python 版本:
- 2、Django下载地址:
- 3、安装(无需下载)
- 4、验证安装
- cmd进入python
- 获取版本信息
- 二、创建第一个项目
- 1、在合适位置创建一个目录
- 2、打开DOS进入到上一步创建的目录下
- 3、输入:django-admin startproject project
- 4、目录层级说明
- manage.py
- __init__.py
- settings.py
- urls.py
- wsgi.py
- 三、基本操作
- 1、设计表机构
- a、班级表结构
- 表名:grade
- 字段:
- b、学生表结构
- 表名:students
- 字段:
- 2、配置数据库
- a、配置MySQL
- python3.x安装的是PyMySQL
- 在__init__.py文件中写入两行代码
- b、格式:
- 3、创建应用
- a、打开cmd进入01-wj目录下的project的目录
- b、执行:python manage.py startapp myAPP
- c、myApp目录说明
- admin.py
- models.py
- views.py
- 4、激活应用
- 5、定义模型
- 引入:from django.db import models
- 模型类要继承models.Model类
- 6、在数据库中生成数据表
- a、生成迁移文件
- b、执行迁移
- 7、测试数据操作
- a、进入到python shell
- b、执行:python manage.py shell
- c、引入包:
- d、查询所有数据
- e、添加数据
- f、查询某个对象
- g、修改数据
- h、删除数据
- 物理删除(真实删除!)
- 逻辑删除(isDelete = True)
- I、关联对象
- 创建一个学生
- 获得关联对象的集合
- 创建一个学生属于‘’python04‘’班
- 8、启动服务器
- a、格式:
- b、说明:
- 9、Admin站点管理
- a、概述:
- 内容发布
- 公共访问
- b、配置Admin应用
- c、创建管理员用户
- d、汉化
- 10、管理数据表
- a、修改admin.py文件
- b、自定义管理页面
- 属性说明:
- list_display
- list_filter
- search_fields
- list_per_page
- fields
- fieldsets
- 关联对象
- 布尔值显示问题
- 执行动作位置
- c、使用装饰器完成注册
- 11、视图的基本使用
- a、概述:
- b、定义视图
- c、配置url
- 修改project目录下的url.py文件
- 在myAPP应用目录下创建一个urls.py文件
- 12、模板的基本使用
- a、概述:
- b、创建模板目录
- c、配置模板路径
- d、定义grades.html和students.html两个模板
- 模板语法
- {{输出值,可以是变量,也可以是对象属性}}
- {%执行代码段%}
- e、http://127.0.0.1:8000/grades
- 写grades.html模板
- 定义视图
- 配置URL
- f、http://127.0.0.1:8000/students
- 写students.html模板
- 定义视图
- 配置URL
- g、点击班级,显示对应班级的所有学生
- 写students.html模板
- 定义视图
- 配置url
一、Django 安装
1、Django 版本对应的 Python 版本:
2、Django下载地址:
https://www.djangoproject.com/download/
3、安装(无需下载)
打开cmd,输入:pip install Django==1.11.4,然后回车
4、验证安装
cmd进入python
获取版本信息
import django
django.get_version()
二、创建第一个项目
1、在合适位置创建一个目录
2、打开DOS进入到上一步创建的目录下
CD C:\Users\Administrator\PycharmProjects\bilibili_qianfeng\bilibili_20200404\01-wj
3、输入:django-admin startproject project
查看目录结构:tree . /F
4、目录层级说明
manage.py
一个命令行工具,可以让你以各种方式与该Django项目进行交互
init.py
一个空文件,告诉Python该项目是一个Python包
settings.py
项目的配置文件
urls.py
项目的URL申明,一份由Django驱动的网站“目录”
wsgi.py
一个WSGI兼容的Web服务器的入口,以便运行你的项目
三、基本操作
1、设计表机构
a、班级表结构
表名:grade
字段:
班级名称:gname
成立时间:gdate
女生总数:ggirlnum
男生总数:gboynum
是否删除:isDelete
b、学生表结构
表名:students
字段:
学生姓名:sname
学生性别:sgender
学生年龄:sage
学生简介:scontend
所属班级:sgrade
是否删除:isDelete
2、配置数据库
注意:Django默认使用Sqlit数据库
在setting.py文件中,通过DATABASE选项进行数据库配置
a、配置MySQL
python3.x安装的是PyMySQL
在__init__.py文件中写入两行代码
import pymysql
pymysql.install_as_MySQLdb()
b、格式:
3、创建应用
在一个项目中可以创建多个应用,每个应用进行一种业务处理
a、打开cmd进入01-wj目录下的project的目录
b、执行:python manage.py startapp myAPP
c、myApp目录说明
admin.py
站点配置
models.py
模型
views.py
视图
4、激活应用
在setting.py文件中,讲myApp应用加入到INSTALLED-APPS选项中
5、定义模型
概述:有一个数据表,就应该对应一个模型
在models.py中定义模型
引入:from django.db import models
模型类要继承models.Model类
from django.db import models# Create your models here.class Grades(models.Model):gname = models.CharField(max_length=20)gdate = models.DateTimeField()ggirlnum = models.IntegerField()gboynum = models.IntegerField()isDelete = models.BooleanField(default=False)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")
说明:不需要定义主键,在生成时自动添加,并且值为自动增加
6、在数据库中生成数据表
a、生成迁移文件
执行:python manage.py makemigrations
在migrations目录下生成一个迁移文件,此时数据库中还没有生成数据表
b、执行迁移
执行:python manage,py migrate
相当于执行sql语句创建数据表
7、测试数据操作
a、进入到python shell
b、执行:python manage.py shell
c、引入包:
from myAPP.models import Grades,Students
from django.utils import timezone
from datetime import *
d、查询所有数据
格式:类名.objects.all()
Grades.objects.all()
e、添加数据
本质:创建一个模型类的对象实例
grade1=Grades()
grade1.gname=‘python04’
grade1.gdate=datetime(year=2020,month=4,day=4)
grade1.ggirlnum=3
grade1.gboynum=70
grade1.save()
f、查询某个对象
格式:类名.objects.get(pk=1)
Grades.objects.get(pk=1)
g、修改数据
模型对象.属性 = 新值
grade1.gboynum = 60
grade1.save()
h、删除数据
物理删除(真实删除!)
模型对象.delete()
逻辑删除(isDelete = True)
I、关联对象
创建一个学生
stu = Students()
stu.sname = “小明”
stu.sgender = False
stu.sage = 20
stu.scontend = “我叫小明”
stu.sgrade = grade1
stu.save()
获得关联对象的集合
需求:获取python04班级的所有学生
格式:对象名.关联的对象名_set.all()
grade1.students_set.all()
创建一个学生属于‘’python04‘’班
stu1 = grade1.students_set.create(sname=u’曾志伟’,sgender=True,scontend=u’我叫曾志伟’,sage=45)
不用save()直接就创建成功
8、启动服务器
a、格式:
python manage.py runserver ip:port
ip可以不写,不写的话代表本机ip
port端口号默认是8000
python manage.py runserver
b、说明:
这是一个纯python写的轻量级web服务器,仅仅在开发测试中使用
9、Admin站点管理
a、概述:
内容发布
负责添加、删除、修改内容
公共访问
b、配置Admin应用
在settings.py文件中的INSTALLED_APPS中添加“django.contrib.admin”,默认是已经添加好的
c、创建管理员用户
执行:python manage.py createsuperuse
依次输入用户名、邮箱、密码
创建后在网址输入账号密码:http://127.0.0.1:8000/admin/
d、汉化
修改settings.py文件
10、管理数据表
a、修改admin.py文件
from .models import Grades,Students# 注册
admin.site.register(Grades)
admin.site.register(Students)
b、自定义管理页面
from .models import Grades,Students# 注册
class GradesAdmin(admin.ModelAdmin):# 列表页属性list_display = ['pk','gname','gdate','ggirlnum','gboynum','isDelete']list_filter = ['gname']search_fields = ['gname']list_per_page = 5# 添加、修改页属性# fields = ['ggirlnum','gboynum','gname','gdate','isDelete']# fieldsets = [# ("num",{"fields":['ggirlnum','gboynum']})# ("base",{"fields":['gname','gdate','isDelete']})# ]
admin.site.register(Grades, GradesAdmin)
属性说明:
列表页属性
list_display
显示字段
list_filter
过滤字段
search_fields
搜索字段
list_per_page
分页
添加修改属性
fields
属性先后顺序
fieldsets
给属性分组
注意:fields与fieldsets不能同时使用
关联对象
需求:在创建一个班级时可以直接添加几个学生
class StudentsInfo(admin.TabularInline):# Stackedlnlinemodel = Studentsextra = 2
class GradesAdmin(admin.ModelAdmin):inlines = [StudentsInfo]
布尔值显示问题
class StudentsAdmin(admin.ModelAdmin):def gender(self):if self.sgender is True:return "男"else:return "女"# 设置页面列的名称gender.short_description = "性别"list_display = ['pk','sname','sage',gender,'scontend','sgrade','isDelete']list_per_page = 2
admin.site.register(Students,StudentsAdmin)
执行动作位置
class StudentsAdmin(admin.ModelAdmin):def gender(self):if self.sgender is True:return "男"else:return "女"# 设置页面列的名称gender.short_description = "性别"list_display = ['pk','sname','sage',gender,'scontend','sgrade','isDelete']list_per_page = 10# 执行动作的位置actions_on_top = Falseactions_on_bottom = True
admin.site.register(Students,StudentsAdmin)
c、使用装饰器完成注册
@admin.register(Students)
class StudentsAdmin(admin.ModelAdmin):def gender(self):if self.sgender is True:return "男"else:return "女"# 设置页面列的名称gender.short_description = "性别"list_display = ['pk','sname','sage',gender,'scontend','sgrade','isDelete']list_per_page = 10# 执行动作的位置actions_on_top = Falseactions_on_bottom = True
# admin.site.register(Students,StudentsAdmin)
11、视图的基本使用
a、概述:
在django中,视图对web请求进行回应
视图就是一个python函数,在views.py文件中定义
b、定义视图
from django.http import HttpResponse
def index(request):return HttpResponse("WJ is a good man")
c、配置url
修改project目录下的url.py文件
from django.conf.urls import url,include
from django.contrib import adminurlpatterns = [url(r'^admin/', admin.site.urls),url(r'^',include('myAPP.urls'))
]
在myAPP应用目录下创建一个urls.py文件
from django.conf.urls import urlfrom . import viewsurlpatterns = [url(r'^$',views.index)
]
12、模板的基本使用
a、概述:
模板是HTML页面,可以根据视图中传递过来的数据进行填充
b、创建模板目录
创建templas目录,再目录下创建对应项目的模板目录(project/templates/myAPP)
c、配置模板路径
修改settings.py文件下的TEMPLATES
TEMPLATES = [{'BACKEND': 'django.template.backends.django.DjangoTemplates','DIRS': [os.path.join(BASE_DIR,'templates')],'APP_DIRS': True,
d、定义grades.html和students.html两个模板
模板语法
{{输出值,可以是变量,也可以是对象属性}}
{%执行代码段%}
e、http://127.0.0.1:8000/grades
写grades.html模板
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>班级信息</title>
</head>
<body><h1>班级信息列表</h1><ul>{%for grade in grades%}<li><a href="#">{{grade.gname}}</a>></li>{%endfor%}</ul></body>
</html>
定义视图
from .models import Grades
def grades(request):# 去模型models里取数据gradesList = Grades.objects.all()# 讲数据传递给模板,模板再渲染页面,将渲染好的页面返回给浏览器return render(request,'myAPP/grades.html',{"grades":gradesList})
配置URL
from django.conf.urls import urlfrom . import viewsurlpatterns = [url(r'^$',views.index),url(r'^(\d+)\$',views.detail),url(r'^grades/$',views.grades)
]
f、http://127.0.0.1:8000/students
写students.html模板
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>学生信息</title>
</head>
<body><h1>学生信息列表</h1>><ul>{%for student in students%}<li>{{student.sname}}--{{student.scontend}}</li>>{%endfor%}</ul>></body>
</html>
定义视图
from .models import Students
def students(request):studentsList = Students.objects.all()return render(request,'myAPP/students.html',{"students":studentsList})
配置URL
from django.conf.urls import urlfrom . import viewsurlpatterns = [url(r'^$',views.index),url(r'^(\d+)\$',views.detail),url(r'^grades/$',views.grades),url(r'^students/$',views.students)
]
g、点击班级,显示对应班级的所有学生
写students.html模板
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>学生信息</title>
</head>
<body><h1>学生信息列表</h1><ul>{%for student in students%}<li>{{student.sname}}--{{student.scontend}}--{{student.sgrade}}</li>{%endfor%}</ul></body>
</html>
定义视图
def gradesStudents(requst,num):# 获得对应的班级对象grade = Grades.objects.get(pk = num)# 获得班级下的所有学生对象列表studentsList = grade.students_set.all()return render(requst,'myAPP/students.html',{"students":studentsList})
配置url
from django.conf.urls import urlfrom . import viewsurlpatterns = [url(r'^$',views.index),url(r'^(\d+)\$',views.detail),url(r'^grades/$',views.grades),url(r'^students/$',views.students),url(r'^grades/(\d+)$',views.gradesStudents)
]
Django 菜鸟教程(跑通流程)相关推荐
- Django学习笔记 ORM操作 From菜鸟教程
# -*- coding: utf-8 -*- #获取数据的多种操作from django.http import HttpResponsefrom TestModel.models import T ...
- 大疆 DJI mobile SDK系列详细教程——运行实例代码(跑通大疆官方提供Mobile SDK里的sample code)
大疆 DJI mobile SDK系列详细教程--运行实例代码(跑通大疆官方提供Mobile SDK里的sample code) 文章目录 一.官方文献与资源地址 二.操作步骤 提示:昨天在尝试跑通大 ...
- YOLOv4从配置环境到跑通代码的小白教程
一直以来都只是看论文和网上的一些纯文字的讲解,但从来没有实操过,非常想自己跑一下代码,看一下算法的整个实现过程,于是就有了这次尝试. 系统环境介绍 windows 10 NVIDIA GeForce ...
- Ubuntu下跑通py-faster-rcnn、详解demo运作流程
在不同的服务器不同的机器上做过很多次实验,分别遇到各种不一样的错误并且跑通Py-Faster-RCNN,因此,在这里做一个流程的汇总: 一.下载文件: 首先,文件的下载可以有两种途径: 1.需要在官网 ...
- MPI部署踩坑实况!!!最终成功跑通梯形面积法!!!精准全流程命令+各步骤报错解决方案!!!
MPI部署踩坑实况!!!最终成功跑通梯形面积法!!!精准全流程命令+各步骤报错解决方案!!! 写在前面,博主暂用Win10系统,本想远程连接控制个服务器走一下流程,经师兄推荐,使用WSL装了个Ubun ...
- 装不了 pytorch=0.4.0? ubuntu下 基于 cuda=92 和 pytorch=1.2 配置环境跑通 CornerNet 训练和测试流程 步骤详解(包括GPU限制问题详解)
ubuntu下跑通CornerNet的流程步骤 环境配置 写这篇博客原因? 更改conda_packagelist.txt conda下基于conda_packagelist.txt创建新环境 安装p ...
- 教程 | 以太坊智能合约编程之菜鸟教程
教程 | 以太坊智能合约编程之菜鸟教程 译注:原文首发于ConsenSys开发者博客,原作者为Eva以及ConsenSys的开发团队.如果您想要获取更多及时信息,可以访问ConsenSys首页点击左下 ...
- python写脚本入门-学习Python的教程?:python 脚本菜鸟教程
学习Python的教程? Python作为一门面向对象的性语言,其实它的学习也很简单 - 配置 - Python基础(语法..数据类型.高级变量.函数.Python高级特性) - 面向对象编程.面向对 ...
- 超级简单的Python爬虫教程,python爬虫菜鸟教程官网
毫无基础的人如何入门 Python ? Python是一种计算机程序设计语言.你可能已经听说过很多种流行的编程语言,比如非常难学的C语言,非常流行的Java语言,适合初学者的Basic语言,适合网页编 ...
- Verilog0.2:跑通第一个Vivado工程
Verilog0.2:跑通第一个Vivado工程 在本文中,你将能学会: 学会基本使用Vivado 学会一些FPGA开发中的基本概念 用VScode代替Vivado写代码 接触到管脚约束及其细节 文章 ...
最新文章
- 由于不知线程池的bug,某Java程序员叕被祭天
- 在ddms 里面查看data/data里面的东西 不显示data/data
- TypeScript 枚举(Enum)
- 字符集与编码(九)——GB2312,GBK,GB18030
- php中国天气api接口,免费天气预报API接口使用教程(信息来源权威及时)
- PyCharm大全(转)
- poj 1322 Chocolate (概率dp)
- 【Z】男人应该努力去做的
- 计算机毕业设计Java美发门店管理系统(源码+系统+mysql数据库+lW文档)
- 计算机组成原理基本概念,《计算机组成原理》教学中几个基本概念的分析
- 如何设置无线路由器?
- linux中常用的压缩命令,Linux中常用的压缩和解压缩命令汇总
- 《数据挖掘》读书笔记2、3章节
- 红米4鸿蒙系统刷机包,小米红米(移动版)刷机包 基于官方4.2.1 极简稳定纯净 完整root权限 V4.0...
- 计算机编程学英语词汇,计算机编程 常用术语英语词汇大全
- 计算机二级PS教学视频百度云,计算机二级ps考试题库完整教程文件.pdf
- 符合这8种性格的人都长寿
- docker实现quagga_docker中安装quagga
- 手机计算机怎么打游戏,嫌手机屏幕小,玩游戏不爽?教你如何把手机屏幕投到电脑...
- 搜索引擎是如何最大化关键字广告收益的