Django web框架学习笔记
Django1.11.4 版本支持Python3.5 3.6
1.Django安装
pip install django==1.11.4
2.验证是否安装成本
python
import django
django.get_version()
3.创建项目
a. 在合适位置创建一个目录django_pratice
b. 打开cmd,进入创建的django_pratice目录下
c. django-admin startproject django_demo(项目名)
d. cmd下输入tree . /f查看目录层级
manage.py 一个命令行工具,可以让我们用多种方式对Django项目进行交互
__init__.py 一个空文件,它告诉Python这个目录应该被看做一个包
settings.py 项目的配置文件(主要处理文件)
urls.py 项目的url声明 (主要处理文件)
wsgi.py 项目与WSGI兼容的Web服务器入口
4. 基本操作
a.设计表结构
班级表结构: 表名1----grades 字段---班级名称(gname)、成立时间(gdate)、女生总数(ggirlnum)、男生总数(gboynum)、是否删除(isDelete)
学生表结构: 表名2----students 字段---学生姓名(sname)、学生性别(sgender)、学生年龄(sage)、学生简介(scontend)、学生班级(sgrade)、是否删除(isDelete)
b.配置数据库(Django默认使用SQLite数据库)
在settings.py文件中通过DATABASES选项进行数据库配置(先决条件:配置MySQL且Python3.x中安装的是PyMySQL)
在__init__.py文件中写入两行代码
import pymysql
pymysql.install_as_MySQLdb()
创建数据库django_demo
create database django_demo(数据库名)
以数据库django_demo为例进行示范:对settings.py中的DATABASES进行设置
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': "django_demo",
'USER': "root",
'PASSWORD': "123456",
'HOST': "localhost",
'PORT': "3306"
}
}
c. 创建应用------在一个项目中可以创建多个应用,每个应用进行一种业务处理
打开cmd,进入django_demo目录下的django_demo(项目目录)的目录,输入命令创建名为myApp的app:
python manage.py startapp myAPP(应用名)
myAPP目录说明:
admin.py 进行站点配置
models.py 创建模型
views.py 创建视图
d. 激活应用
在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',
]
e. 定义模型(有一个数据表就对应有一个模型,在models.py文件中定义模型)
引入:from django.db import models,模型类要继承models.Model类
示例:
class Grades(models.Model):
gname = models.CharField(max_length=20)
gdate = models.DateTimeField()
ggirlnum = models.IntegerField()
gboynum = models.IntegerField()
isDelete = models.BooleanField(default=False)
def __str__(self):
return "%s--%d--%d" % (self.gname, self.ggirlnum, self.gboynum)
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", on_delete=models.CASCADE,) # 不需要定义主键,在生成时自动添加,并且值为自动增加
f. 在数据库中生成数据表
打开cmd,进入django_demo目录下的django_demo(项目目录)的目录
生成迁移文件: 执行 python manage.py makemigrations 在migrations目录下生成一个迁移文件,此时数据库中还没有生成数据表
执行迁移: 执行 python manage.py migrate 相当于执行MySQL语句创建了数据表 select * from myapp_students; desc myapp_students;
g. 测试数据操作
打开cmd,进入django_demo目录下的django_demo(项目目录)的目录,输入 python manage.py shell
引入包
from myAPP.models import Grades, Students
from django.utils import timezone
from datetime import *
查询所有数据 类名.objects.all() 示例: Grades.objects.all()
添加数据(本质:创建一个模型类的对象实例即创建一个数据表,类中的属性对于表中的字段)
grade1 = Grades()
grade1.gname = "python01"
grade1.gdate = datetime(year=2017, month=7, day=17)
grade1.ggirlnum = 3
grade1.gboynum = 70
grade1.save()
查看某个对象 类名.objects.get(pk=索引号) 示例:Grades.objects.get(pk=2)
修改某个数据 模型对象属性 = 新值 示例:grade2.gboynum = 60 grade2.save()
删除数据 模型对象.delete() 示例:grade2.delete()
(注意:这是物理删除,数据库中的相应数据被永久删除)
关联对象
示例:
stu = Students()
stu.sname = "curry"
stu.sgender = False
stu.sage = 20
stu.scontend = "I am curry"
stu.sgrade = grade1
stu.save()
获得关联对象的集合
需求:猎取python04班级的所有学生
对象名.关联的类名小写_set.all() 示例:grade1.students_set.all()
需求:创建曾志伟,属于python04班级
示例:
stu3 = grade1.students_set.create(sname=u'曾志伟',sgender=True,scontend=u"我叫曾志伟",sage=45)( 注意:汉字要转码,这样创建的数据直接被添加到了数据库当中。)
h. 启动服务器
打开cmd,进入django_demo目录下的django_demo(项目目录)的目录
格式:python manage.py runserver ip:port(注意:ip可以不写,不写代表本机ip,端口号默认是8000) 示例:python manage.py runserver
说明:这是一个纯python编写的轻量级web服务器,仅仅在开发测试中使用这个
i. Admin站点管理
概述:内容发布----负责添加,修改,删除内容;公告访问-----xxx
配置Admin应用: 在settings.py文件中的INSTALLED_APPS中添加'django.contrib.admin',这条默认是添加好的。
创建管理员用户:
新开cmd,在项目目录下执行 python manage.py createsuperuser依次输入账号名,邮箱,密码即可完成用户创建
登陆:
http://127.0.0.1:8000/admin/
汉化:
把django_demo目录下的settings.py中作如下设定:LANGUAGE_CODE = 'zh-Hans'TIME_ZONE = 'Asia/Shanghai'
再重启web服务---python manage.py runserver
管理数据表:
修改 myAPP\admin.py 如下:
from django.contrib import admin
# Register your models here.
from .models import Grades, Students
# 注册
admin.site.register(Grades)
admin.site.register(Students)
自定义管理页面:-------------在admin.py文件下写一个类
属性说明:
# 列表页属性
list_display = [] # 显示字段设置
list_filter = [] # 过滤字段设置
search_fields = [] # 搜索字段设置
list_per_page = [] # 分页设置
# 添加,修改页属性
fields = [] # 规定属性的先后顺序
fieldsets = [] # 给属性分组 (注意:fields与fieldsets不能同时使用)
属性示例:
# 列表页属性
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"]}),
]
关联对象:需求:在创建一个班级时可以直接添加几个学生
class StudentsInfo(admin.TabularInline):# 可选参数admin.StackedInline
model = Students
extra = 2
class GradesAdmin(admin.ModelAdmin):
inlines = [StudentsInfo]
布尔值显示问题示例:
class StudentsAdmin(admin.ModelAdmin):
def gender(self):
if self.sgender:
return "男"
else:
return "女"
# 设置页面列的名称
gender.short_description = "性别"
list_display = ['pk', 'sname', 'sage', gender,
'scontend', 'sgrade', 'isDelete']
list_per_page = 10
admin.site.register(Students, StudentsAdmin)
执行按钮位置:
class StudentsAdmin(admin.ModelAdmin):
...snip...
actions_on_top = False
actions_on_bottom = True
admin.site.register(Students, StudentsAdmin)
使用装饰器完成注册:
@admin.register(Students)
class StudentsAdmin(admin.ModelAdmin):
def gender(self):
...snip...
actions_on_top = False
actions_on_bottom = True
j. 视图的基本使用
概述:在Django中,视图是对web请求进行回应,视图就是一个python函数,在views.py文件中定义。
定义视图:示例:在myApp\views.py中写入
from django.shortcuts import render
# Create your views here.
from django.http import HttpResponse
def index(request):
return HttpResponse("Curry is a good man")
配置url:
方法:url方法
修改django_demo目录下的urls.py文件:
from django.contrib import admin
from django.conf.urls import url,include
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),
]
k. 模板的基本使用
概述:模板是HTML页面,可以根据视图中传递过来的数据进行填充
创建模板:
创建templates目录,在目录下创建对应项目的模板目录(django_demo/templates/myAPP)
配置模板路径:
修改settings.py文件下的TEMPLATES下的'DIRS'为'DIRS': [os.path.join(BASE_DIR, 'templates')],
定义grades.html与students.html模板:
在templates\myAPP\目录下创建grades.html与students.html模板文件
模板语法:
{{输出值,可以是变量,也可以是对象,属性}}
{%执行代码段%}
http://127.0.0.1:8000/grades
写grades.html模板:
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>班级信息</title>
</head>
<body>
<h1>班级信息列表</h1>
<ul>
<!--[python04, python05, python06]-->
{%for grade in grades%}
<li>
<a href="#">{{grade.gname}}</a>
</li>
{%endfor%}
</ul>
</body>
</html>
Django web框架学习笔记相关推荐
- Django Web框架教学笔记-1
<Django Web框架教学笔记> 目录 文章目录 <Django Web框架教学笔记> 目录 Django框架的介绍 Django的安装 Django框架开发 创建项目的指 ...
- Django web框架学习之旅(4)
<Django Web 框架> 目录 Django shell的使用 admin 后台数据库管理 自定义后台管理数据表 修改后台Models的展现形式 模型管理器类 数据库表管理 数据表关 ...
- Django web 框架学习之旅(3)
<Django Web 框架> 目录 静态文件 Django中的应用 - app 什么是应用(app) 创建应用app Django应用的结构组成 数据库 和 模型 Django下使用my ...
- Django Web开发学习笔记(4)
第四章 模板篇 上一章的内容,我们将HTML的代码和Python代码都混合在了在view.py的文件下.但是这样做的坏处无疑是明显的,引用DjangoBook的说法: 对页面设计进行的任何改变都必须对 ...
- Django企业开发实战 高效Python Web框架指南 笔记 (一)
Django企业开发实战 高效Python Web框架指南 笔记 (一) 内容: 作者是 the5fire,他的博客地址:https://www.the5fire.com/957.html 2016年 ...
- SpringMVC框架--学习笔记(下)
接上篇:SpirngMVC框架--学习笔记(上):https://blog.csdn.net/a745233700/article/details/81038382 17.全局异常处理: 系统中异常包 ...
- SpringMVC框架--学习笔记(上)
1.SpringMVC入门程序: (1)导入jar包:spring核心jar包.spring-webmvc整合Jar包 (2)配置前端控制器:web.xml文件中 <?xml version=& ...
- Spring Boot 框架学习笔记(五)( SpringSecurity安全框架 )
Spring Boot 框架学习笔记(五) SpringSecurity安全框架 概述 作用 开发示例: 1. 新建项目 2. 引入依赖 3. 编写`SecurityConfig`类,实现认证,授权, ...
- JeeSite 框架学习笔记
JeeSite 框架学习笔记 目录 JeeSite 框架学习笔记 一.全局配置 1. 获取 Resource资源实际路径 DefaultResourceLoader 2. 配置前端 js css 二. ...
最新文章
- java上传ftp数据丢失_Java:将文件上传到FTP问题(数据包丢失) - java
- Python3 os模块应用
- SpringBoot从入门到实战只需一篇文章
- 更改应用程序图标_【iOS12人机交互指南】6.2-应用图标
- Windows 10 常用的快捷键及常用指令
- C++ 常用基础概念
- 计算机科学中抽象的作用,抽象释义
- 关于RecyclerView条目复用
- bzoj2456: mode
- 拔染印花的主要特点和工艺技术
- office 打开wps乱_word打开wps是乱码怎么办
- 开放源代码不得不知的一些事情
- Win7 Windows照片查看器无法显示此图片,因为计算机上的可用内存可能不足
- UDP打洞原理与N2N内网穿透
- 房地产业务学习(04)-房企信息化:谁忽悠了谁?
- 计算机蓝牙快捷键,电脑蓝牙在哪里开?蓝牙快捷方式介绍
- 用于服务器的芯片 i7,上海云服务器i7
- bios找不到硬盘模式选项如何解决?
- 团员大会如何写组织学习计算机知识,团支部召开接收新团员的支部大会的会议记录怎么写?...
- 最#全#的#海#淘#网#址#大#全
热门文章
- 利用Flutter写一个跨平台的果核APP(4)——数据存储
- 10个你必须知道的jQueryMobile代码片段(转)
- Javascript--键盘事件的组合使用
- 修改模拟器的IMEI号
- Kafka、ActiveMQ、RabbitMQ、RocketMQ 都有什么优点和缺点?
- 百亿数据,毫秒级返回,如何构建?
- 年薪80万技术专家,面试通过后,被发现简历造假!合并8年前多段工作!惨遭警告和淘汰!...
- 美团(Leaf)分布式ID生成器,好用的一批!
- RocketMQ 一行代码造成大量消息丢失
- 妥~阿里程序员常用的 15 款开发者工具