一:Django项目创建步骤:

方式1:命令创建:

进入指定目录

C:\Users\bing>F:

F:\>cd mysite

F:\mysite>django-admin startproject mysite

F:\mysite>python manage.py startapp app01

F:\mysite>python manage.py startapp app02

F:\mysite>python manage.py startapp app03(一个Django项目可以有多个app)

admin:Django自带后台管理相关配置,用于操作数据库(数据库的创建,修改,删除,数据表数据行的增删改查),可以不用pymysql和Navicat操作数据库了

apps.py:表示当前app的配置文件

models.py:写类,Django根据这个类来操作数据库表(和SQLAlchemy相似,写类和函数操作数据库)

test.py:快速做单元测试

views.py:视图函数(业务处理)

migrations:创建数据库表和行时,Django自动生成的文件

方式2:图形界面创建Django项目

二.

启动项目,输入URL地址:http://127.0.0.1:8000/admin/出现一个登录界面

1.路由系统:

  url ->函数

  a.一一对应关系

    /login/->def login()

  b./add_user  

  HTML:有一个搜索引擎优化(SEO),要想排名靠前就不要写 <li>{{ i }} | <a href="/edit/?nid={{ i }}">编辑</a></li> 这样的语句,如果是GET传参,nid的值经常变动,因为这种语句的权重比较低。

  而要写这样的语句

  http://127.0.0.1:8000/edit/?nid=ffffffff/(权重低)

  http://127.0.0.1:8000/edit/ffffffff/(认可,权重高)    urls.py配置:   url(r'^edit/(\w+)/', views.edit),  r代表原生字符,(\w+)代表所有字母和数字,还有下划线(a-z、A-Z、0-9、_)

  urls.py:   url(r'^edit/(\w+).html/', views.edit)  url可以写正则表达式,(\w+)是动态的,所以这样的也叫动态路由,如果是这样:url(r'^edit/(\w+)/(\w+).html/', views.edit),#edit得有两个参数去接收

ORM操作表(创建表,增删改查)

创建表:

class UserGroup(models.Model):"""部门"""title = models.CharField(max_length=32)

创建部门表

class UserInfo(models.Model):"""员工"""nid = models.BigAutoField(primary_key=True)user= models.CharField(max_length=32)password = models.CharField(max_length=64)# age = models.IntegerField(null=True)age = models.IntegerField(default=1)ug = models.ForeignKey("UserGroup",null=True)# ug自动生成ug_id列

创建员工表

6.创建数据表:
命令:
python manage.py makemigrations 第一条记录相关日志
python manage.py migrate 第二条执行结果
英文单词: migrate:移动; 迁移,移往; 随季节而移居;

nid = models.BigAutoField(primary_key=True) 这一行可以不用设置
Django里会自动设置主键,主键名默认为id,而且是自增id,null=True设置默认为空或 default=1默认值为1,CharField必须设置max_length最大长度,不然程序会报错

ug = models.ForeignKey("UserGroup",null=True) 创建员工表的外键      # ug自动生成ug_id列

Django1.8以后把settings中的TEMPLATE_DIRS配置项移到了TEMPLATES 下

TEMPLATE_DIRS = (os.path.join(BASE_DIR,'templates'),
)

settings.py要隐藏的配置文件

TEMPLATES = [{'BACKEND': 'django.template.backends.django.DjangoTemplates','DIRS': [os.path.join(BASE_DIR, 'templates')],'APP_DIRS': True,'OPTIONS': {'context_processors': ['django.template.context_processors.debug','django.template.context_processors.request','django.contrib.auth.context_processors.auth','django.contrib.messages.context_processors.messages',],},},
]

settings.py文件里的目标配置文件TEMPLATES

migrations下面的py文件不要删,这个可以查看创建表和增删改查表等操作的记录,可以及时发现问题

1.python manage.py makemigrations的作用是执行一次就读取models.py文件里的类,然后在migrations目录下生成配置文件,

2.python manage.py migrate拿着生成的配置文件去生成数据库的语句

修改表里的列,比如员工表里的user改成username,然后执行两条命令就好了

1.python manage.py makemigrations

2.python manage.py migrate

数据表的增删改查

#1.新增:

def index(request):#增删改查from app01 import models#新增models.UserGroup.objects.create(title='研发部')  return HttpResponse('bing')

http://127.0.0.1:8000/app01/index.html 浏览器访问,相当于执行了sql语句

#2.查:

group_list = models.UserGroup.objects.all() 查所有部门表信息
print(group_list) #输出一个QuerySet对象
输出:<QuerySet [<UserGroup: UserGroup object>, <UserGroup: UserGroup object>, <UserGroup: UserGroup object>, <UserGroup: UserGroup object>]>user_list = models.UserInfo.objects.all()  查所有员工表信息
print(user_list)输出:<QuerySet [<UserInfo: UserInfo object>, <UserInfo: UserInfo object>]>

# 数据库相关操作
def index(request):# 增删改查from app01 import models# 新增# models.UserGroup.objects.create(title='销售部')   ----insert into # models.UserInfo.objects.create(user='root',password='pwd',age=18,ug_id=1)# 查找# group_list = models.UserGroup.objects.all()    # group_list = models.UserGroup.objects.filter(id=1)   filter相当于where# group_list = models.UserGroup.objects.filter(id__gt=1)  gt大于# group_list = models.UserGroup.objects.filter(id__lt=1)  lt小于# 删除# models.UserGroup.objects.filter(id=2).delete()  删除相当于delete from tablename where id=2;# 更新models.UserGroup.objects.filter(id=2).update(title='公关部')    相当于update tablename set title='公关部' where id = 2;# group_list QuerySet类型(列表)# QuerySet类型[obj,obj,obj]# print(group_list)# for row in group_list:#     print(row.id,row.title)    输出研发部,运维部# models.UserInfo.objects.all()
group_list = models.UserGroup.objects.all()return render(request,'newindex.html',{"group_list": group_list})

转载于:https://www.cnblogs.com/bingabcd/p/7066170.html

Django框架(二)相关推荐

  1. Django框架深入了解_05 (Django中的缓存、Django解决跨域流程(非简单请求,简单请求)、自动生成接口文档)(二)

    二.跨域: 回到顶部 跨域知识介绍: 点我以前博客 跨域解决方法:CORS:跨域资源共享 CORS请求分类(简单请求和非简单请求) 简单请求(simple request):只需要在头信息之中增加一个 ...

  2. liunx+python+django框架实现图片生成二维码

    点击箭头处"蓝色字",免费领测试技术及面试资料! 余生皆欢喜 liunx+python+django框架实现二维码生成器 首先我简单的介绍下django:django官网解释就是如 ...

  3. python开源项目框架二次开发_Python中三大框架各自的应用场景(DJango,flask,Tornado)...

    django:主要是用来搞快速开发的,他的亮点就是快速开发,节约成本,正常的并发量不过10000,如果要实现高并发的话,就要对django进行二次开发,比如把整个笨重的框架给拆掉,自己写socket实 ...

  4. 第十二章 Django框架

    第十二章 Django框架 tcp/ip五层模型 应用层 传输层 网络层 数据链路层 物理层 socket : 套接字,位于应用层和传输层之间的虚拟层,是一组接口 c/s架构 ------> b ...

  5. 利用 Python django 框架 输入汉字,数字,字符,等。。转成二维码!

    利用 Python django 框架 输入汉字,数字,字符,等..转成二维码! 模块必备:Python环境 + pillow  + qrcode 模块 核心代码import qrcodeqr = q ...

  6. python Django web 框架 (二十)之ORM

    Django之模型层第一篇:单表操作 一 ORM简介 我们在使用Django框架开发web应用的过程中,不可避免地会涉及到数据的管理操作(如增.删.改.查),而一旦谈到数据的管理操作,就需要用到数据库 ...

  7. 网站框架搭建——基于Django框架的天天生鲜电商网站项目系列博客(二)

    系列文章目录 需求分析--基于Django框架的天天生鲜电商网站项目系列博客(一) 网站框架搭建--基于Django框架的天天生鲜电商网站项目系列博客(二) 用户注册模块--基于Django框架的天天 ...

  8. 《微信小程序-证件照换底色》之二:用pycharm搭建django框架来接收微信小程序上传的图片

    用pycharm搭建django框架来接收微信小程序的图片 上一篇:微信云开发实现每个用户在云端上传并且下载自己对应的图片 链接: https://blog.csdn.net/qq_44933075/ ...

  9. Django框架之第二篇

    Django框架之第二篇 一.知识点回顾 1.MTV模型 model:模型,和数据库相关的 template:模板,存放html文件,模板语法(目的是将变量如何巧妙的嵌入到HTML页面中). view ...

最新文章

  1. serlvert jsp mysql_JAVA基础:Java多语言编码问题解析(2)
  2. cdev_alloc和cdev_init 的使用
  3. Eclipse 运行程序
  4. SQL Server--[转]SQL Server中临时表与表变量的区别
  5. 网络爬虫--25.【selenium实战】实现拉勾网爬虫之--selenium获取数据
  6. 【BZOJ1079】【codevs2428】着色方案,DP
  7. react中对于key值的理解
  8. mysql优化--explain分析sql语句执行效率
  9. Flex代码整理插件——FlexPrettyPrintCommand
  10. flink cdc 2.0.0 sql 开发模板,及踩坑记录
  11. ANSYS19.0安装(无比详细的图文示范教程)
  12. jike2012年5月实习题
  13. Linux基础命令实例
  14. 从单一服务到多元化服务,智能机器人JIMI的架构改造及逐步开放的过程
  15. 产品读书《关键对话:如何高效能沟通》
  16. 【软件工程】软件需求
  17. 微服务SpringCloud的平台架构及原理分析
  18. 暑假小制作——DIY蓝牙小音箱
  19. 90 岁程序员:他的压缩算法改变了世界!
  20. AE基础教程(9)——第9章 快速预览

热门文章

  1. FFMPEG系列课程(一)打开视频解码器
  2. AsyncTask的理解
  3. 自己定义WinXP的时间校正服务器
  4. JDK5--Annotation学习:基础(一)
  5. ibm服务器hyper-v搭建的虚拟机操作系统数据如何导出到本机,将虚拟机从Hyper-V转移到KVM|导出完整vhdx磁盘转换qcow2...
  6. 树莓派html5播放器,树莓派|5 个很适合在课堂上演示的树莓派项目
  7. 实现歌词效果自动滚动_只需五步,专业Pr软件实现视频歌词渐变色效果,你学会了吗?...
  8. jquery页面加载ajax请求,jquery ajax 加载页面
  9. 类装载器ClassLoader
  10. 服务降级-启动时检查