| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Python知识库 -> Django1.11.4框架简介(一) -> 正文阅读 |
|
[Python知识库]Django1.11.4框架简介(一) |
参考以下内容学习
文章目录
整体大纲 Django1.11.4之基本流程走通设计模式MVC核心思想解耦浏览器请求发送给Controller,Controller把需求发给Model,Model返回数据给Controller,Controller把数据传送给View渲染,View返回给浏览器编程模式Model(模型)应用程序中处理数据逻辑的部分通常模型对象负责在数据库中存取数据View(视图)处理数据显示的部分通常视图是依据模型数据创建的Controller(控制器)处理用户交互的部分负责从视图读取数据,通知用户输入,并向模型发送数据优点降低了各功能模块之间的耦合性,方便重构代码,最大程度上实现了代码重用MTV概述本质与MVC没有区别,各组件之间为了保持松耦合关系编程模式Model(模型)负责业务对象与数据库的对象(ORM)Template(模板)相当于MVC里的View负责把页面展示给用户View(视图)相当于MVC里的Controller负责业务逻辑,并在适当时候调用Model和Template注意Django还有一个url分发器,作用是将一个个URL分发给不同的View处理图解双击放大说明:1.用户输入URL,通过URL控制器进行正则匹配,匹配到相应的视图函数,交给视图处理;2.视图交给Model去取数据,Model取完数据返回给视图;3.视图再把需要展示的数据传给模板(就是html页面)安装 Django1.11.4版本Django与Python对应版本自行百度安装步骤进入终端输入 pip install Django==1.11.4验证是否安装成功进入Python环境import djangodjango.get_version()创建项目创建目录打开终端进入刚才创建的目录下输入 django-admin startproject djangodemo(最后一个是项目名称)输入 tree . /F 查看目录层级目录层级manage.py一个命令行工具,用于我们和Django的交互project目录init.py空文件,告诉Python这个目录应该被看做一个Python包settings.py项目配置文件urls.pyURL分发器,项目的URL声明wsgi.py项目与WSGI兼容的web服务器入口基本操作设计表结构数据库的知识,随意设计就行了班级表学生表配置数据库Django默认数据库是SQLitesettings.py中,通过DATABASES配置数据库配置MySQL用pymysql库在__init__.py中写入两行代码import pymysqlpymysql.install_as_MySQLdb() settings.py中DATABASES = {
} ####### NAME中填数据库名 ####### USER和PASSWORD分别是用户名和密码 ####### HOST为数据库服务器ip,直接填本地主机 ####### PORT为3306默认端口 创建应用一个项目可以创建多个应用,每个应用负责一种业务打开终端,进入项目目录,结构为:│ manage.py└─djangodemo2 执行python manage.py startapp myApp创建一个名为myApp的应用myApp目录说明admin.py站点配置models.py模型views.py视图激活应用(将应用配置到项目中)settings.py文件中,将myApp加入到INSTALLED_APPS中# Application definitionINSTALLED_APPS = [ 定义模型(对接数据库)一个数据库表对应一个模型在models.py中定义from django.db import models模型类要继承models.Model类class Grades(models.Model):
class Students(models.Model): 两个类对应库中的两个表,字段名与老师的略有不同说明:不需要定义主键,主键在生成表时自动添加,并默认值自动添加生成数据表生成迁移文件终端中执行: python manage.py makemigrationsmyApp的目录migrations下生成一个迁移文件执行迁移终端中执行: python manage.py migrate数据库中会生成一系列表如果重新迁移的话,需要删除0001.initial.py文件,把数据库也一块删除,然后再生成迁移文件,再迁移新增一张表的话不需要重新迁移,直接生成0002的迁移文件,再执行迁移即可修改原表的字段的话,需要重新迁移测试操作数据进入python shell执行python manage.py shell引入一些包from myApp.models import Grades, Studentsfrom django.utils import timezone 查询班级表所有数据Grades.objects.all()添加数据本质:创建一个模型类的对象实例grade1 = Grades()创建一个空实例grade1.name = ‘python’名字grade1.date = datetime(yaer=2020, month=4, day=23)日期grade1.save()将刚才创建的grade1实例传给数据库,创建一条数据重写类的__str__函数使之更好地显示数据class Grades(models.Model):####### name = models.CharField(max_length=20) ####### date = models.DateTimeField() ####### girl_num = models.IntegerField() ####### boy_num = models.IntegerField() ####### isDelete = models.BooleanField(default=False) ####### # 更改Grades.objects.all()的输出内容 ####### def str(self): ######## return “%s-%d-%d” % (self.name, self.girl_num, self.boy_num) 查看某个数据Grades.objects.all()查询所有类名.objects.get(pk=2)查询id为2的那一条数据分支主题修改数据模型对象.属性 = 新值grade.name = ‘c++’模型对象.save()grade.save()删除数据(物理删除)g = Grades.objects.get(pk=2)g.delete()关联对象stu = Students()stu.name = ‘zcz’…获得关联对象的集合需求:获取某个班级的所有学生类名.关联的类名小写_set.all()####### grade1.students_set.all() ######## students_set是自带的方法 需求:创建某个人,属于某个班级stu3 = grade1.setudents_set.create(name=u’曾志伟’, gender=True, …)会直接添加到数据库,不用再进行save()启动服务器格式python manage.py runserver ip:portip不写代表本机ipport不写默认是8000说明Python写的轻量级web服务器,仅在开发测试时使用启动打开终端没进入项目目录python manage.py runserver别忘了启动数据库浏览器输入 127.0.0.1:8000检查分支主题Admin站点管理更好的管理数据库的数据,相当于一个后台管理系统概述内容发布负责添加、修改、删除数据公告访问配置Admin应用在settings.py中的INSTALLED_APPS中添加django.contrib.admin默认已经添加创建管理员用户python manage.py createsuperuser输入账号密码浏览器127.0.0.1:8000/admin进入汉化settings.py文件LANGUAGE_CODE = ‘zh-Hans’TIME_ZONE = ‘Asia/Shanghai’ 管理数据表修改admin.py文件引入models中的类from .models import Grades, Students添加注册admin.site.register(Grades)admin.site.register(Students) 自定义管理页面定义类class GradesAdmin(admin.ModelAdmin):列表页属性list_display = [‘pk’, ‘name’, ‘date’, ‘girl_num’, ‘boy_num’, ‘isDelete’]####### 修改页面显示的字段 list_filter = [‘name’]####### 过滤器,在页面右侧 search_fields = [‘name’]####### 搜索框 list_per_page = 5####### 每页最多显示多少条数据 添加、修改页属性fields = [‘girl_num’, ‘boy_num’, ‘name’, ‘date’, ‘isDelete’]####### 规定属性的先后顺序 fieldsets = [(‘num’, {‘fields’: [‘girl_num’, ‘boy_num’]}), ####### 给属性分组 注意:fields和fieldsets不能同时使用关联对象需求:在创建一个班级的时候可以同时添加几个学生####### class StudentsInfo(admin.TabularInline): ######## model = Students ######## extra = 0 ####### class StudentsInfo(admin.StackedInline): ######## 和上一个排版不一样 ####### class GradesAdmin(admin.ModelAdmin): ######## inlines = [StudentsInfo] 布尔值显示问题写函数def sex(self):
设置页面列的名称sex.short_description = ‘性别’ 执行动作的位置问题actions_on_bottom = Trueactions_on_top = False 使用装饰器完成注册@admin.register(Students)class StudentsAdmin(admin.ModelAdmin): 分支主题视图的基本使用概述在django中,视图对web请求进行回应视图就是一个Python函数, 在views.py文件中定义定义视图from django.http import HttpResponsedef index(request):return HttpResponse('zcz is a goood boy. ')配置url修改project目录下的urls.py文件from django.conf.urls import url, includefrom django.contrib import admin urlpatterns = [ ] 在myApp应用目录下创建一个urls.py文件from django.conf.urls import urlfrom . import views urlpatterns = [ 模板的基本使用概述模板就是HTML页面,可以根据视图传过来的数据对页面进行填充创建模板新建templates文件夹在templates中新建myApp文件夹配置模板路径修改settings.py文件下的TEMPLATES‘DIRS’: [os.path.join(BASE_DIR, ‘templates’)],定义grades.html和students.html模板模板语法{{ 输出值,可以使变量,可以使对象.属性 }}{% 执行代码 %}http://127.0.0.1:8000/grades写grades.html模板{% for grade in grades %}
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/15 21:10:05- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |