一、数据库表中字段的增删改查

'''
直接在modules中对字段进行增删改查
然后在tools下点击Run manage.py Task执行makemigrations和migrate
注意在执行字段的删除过程中需不需要对数据进行备份
'''

二、路由基础

'''
# url中含有四个参数
# url(regex, view, kwargs=None, name=None)
# 正则路径 视图函数地址 默认关键字参数(了解) 路由别名 # r'index' 只要请求中含有index都可以匹配成功
url(r'index', views.index) #r'^index' 只要开头是index都可以匹配成功
url(r'^index', views.index) # r'^index$' 只能匹配index,不能匹配index/
url(r'^index$', views.index) # r'^index/$' 不仅能匹配index/,还能匹配index(匹配index时先拿index匹配,如果失败,会自动添加/再次匹配)
url(r'^index/$', views.index) #含有关键字参数,视图函数必须接受这个参数,并且名字必须与关键词参数的key名字相同
url(r'^testkw/$', views.testkw, {'num': 88888}) # def testkw(request, num): # 路由匹配如何关闭默认添加/
①在sttings.py中将中间件的 'django.middleware.common.CommonMiddleware' 这行代码注掉
②在settings.py下添加 APPEND_SLASH = False
'''

三、有名无名分组

'''
正则
import re
res = re.search('/index/(\d+)/(\d+)', '/index/123/456')
print(res.group(1)) #123
print(res.group(2)) #456 #从左往右第一个左括号就是第一个分组
res = re.search('(/index/(\d+)/(\d+))', '/index/123/456')
print(res.group(1)) #/index/123/456
print(res.group(2)) #123
print(res.group(3)) #456 #有名分组和无名分组,有名分组可以由名字获得也可以由编号获得
res = re.search('/index/(?P<num>\d+)/(\d+)', '/index/123/456')
print(res.group(1)) #123
print(res.group(2)) #456
print(res.group('num')) #123 '''
'''
# 无名分组:/testnoname/10/
url(r'^testnoname/(\d+)/$', views.testnoname)
# def testnoname(request, var) # var=10 必须要设置一个参数接受10这个值,这个参数命名随意 # 有名分组:/testname/10/1/
url(r'^testname/(?P<num>\d+)/(?P<page>\d+)/$', views.testname)
# def testname(request, page, num) # page=1 num=10 参数必须与有名分组的名字一致且无先后顺序 # 注:无名分组与有名分组不能混用
'''

四、多app共存的路由分配

'''
# 模块导入过程中从上而下进行导入,如果名字相同只有最后一个起作用
# 在主路由中要配置多个app,在urls.py中导入视图函数模块名字相同,我们需要要对视图函数调用起别名
from app01 import views as app01_views
from app02 import views as app02_views url(r'^app01/test_page/$', app01_views.test_page),
url(r'^app02/test_page/$', app02_views.test_page),
'''

五、多app共存时模板冲突问题

'''
同名的模板的查找顺序是根据settings.py中 INSTALLED_APPS 的配置顺序从上而下进行查找的 如何解决多app共存时模板冲突问题?
方法1:在对应应用下建立自己的templates,再在templates下建立与应用名同名的文件夹,模板文件放在应用名同名的文件夹下 (实际开发中运用少,不要用)
方法2:在项目根目录下的templates中建立每一个应用同名的文件夹,每个应用的模板文件放在自己应用名文件夹下 使用:render(request, 'app_name/test.html')
'''

六、创建app流程

'''
1. python3 manage.py startapp app_name
2. 去settings中配置INSTALLED_APPS, 添加记录:'app_name.apps.App_nameConfig'
# 注:app配置的顺序决定了(共同资源冲突下的)查找顺序
'''

七、路由分发

'''
# 分担总路由的代码压力, 将每个app的自身路由配置交给app自己的ulrs.py来管理(分文件管理路由) 1.在每一个应用中建立自身的urls.py文件,语法同主路由
2.在主路由进行分发
#url(r'^blog/', include('blog.urls')) from django.conf.urls import include
urlpatterns = [
url(r'^app01/', include('app01.urls')),
url(r'^app02/', include('app02.urls')),
]
# 注:主路由分发一定不能使用$正则语法标识结束 (错误eg: ^app01/$)
'''

八、路由别名

'''
1.有些路由会被大量访问(直接访问、间接访问)
2.这些路由可能后期还会发生变化
3.可以给路由设置别名
url(r'^delete_flag_test/(\d+)/$', views.delete_flag, name='delete_flag_test') 前端通过别名访问,在有名和无名分组下使用url别名进行传参的方式一致
<a href="{% url '路由别名' '传入有名无名分组所需参数' %}"></a>
'''

九、名称空间

'''
如果没有名称空间,有同名的请求时会从上而下进行解析,都会执行app02下的test 名称空间的设置:
主路由:
from django.conf.urls import include
urlpatterns = [
url(r'^app01/', include('app01.urls', namespace='app01')),
url(r'^app02/', include('app02.urls', namespace='app02')),
] app01应用下路由
from django.conf.urls import url
from app01 import views
urlpatterns = [
url(r'^test/', views.test, name='test')
] app02应用下路由
from django.conf.urls import url
from app02 import views
urlpatterns = [
url(r'^test/', views.test, name='test')
] 前端页面反向解析: {% url '名称空间名:路由别名' %}
{% url 'app01:test' %} | {% url 'app02:test' %} 视图函数reverse方法:url = reverse('app01:test') | url = reverse('app02:test')
'''

十、反向解析

'''
反向解析:通过路由别名获取真实的路由路径,当真实路径发生改变时,通过别名解析出真实路径的代码不需要改变 from django.shortcuts import reverse
在视图函数中通过reverse方法反向解析出真实的路径 # 1.不带分组:url(r'可能会变的真实路由', 视图函数, name='路由别名')
url = reverse('路由别名') # 2.无名分组:url(r'可能会变的真实路由(带无名分组)', 视图函数, name='路由别名')
url = reverse('路由别名', args=(给无名分组赋值)) #args后面跟是一个元组 # 3.有名分组:url(r'可能会变的真实路由(带有名分组)', 视图函数, name='路由别名')
url = reverse('路由别名', kwargs={给有名分组赋值,key就是有名分组名})
'''

十一、2.x新特性

'''
from django.urls import path, re_path
# 向下兼容,可以使用url,但是不建议使用url, 而是使用与url相同的re_path
from django.conf.urls import url
urlpatterns = [
path('index/', views.index),
# page/<int:msg>/ page/(?P<msg>(\d+)) # 访问/page/123/
# path('page/<int:msg>/', views.page),
# path('page/<str:msg>/', views.page),
# path('page/<path:msg>/', views.page),
# path('page/<slug:msg>/', views.page),
path('page/<uuid:msg>/', views.page),
] # 1. 2.x版本re_path的使用方式同1.x版本url
# 2. path写的是绝对字符串,请求地址必须与路由地址完全匹配,后面斜杠省略会自动添加
# 3. path拥有五个转换器:
-- str:匹配除路径分隔符(/)外的字符串,默认
-- int:匹配自然数
-- slug:匹配字母、数字、横杠及下划线组成的字符串
-- uuid:匹配uuid形式的数据 uuid是一个算法,每次执行都不一样
-- path:匹配任何字符串,包括路径分隔符(/) (不能用?) '''

十二、自定义转换器

'''
# 原因:自定义正则匹配目标路径 在应用里面建一个conventer.py文件,在下面定义一个如下class
语法:
1.自定义类
# 匹配11位的185电话
class CVT185phone:
# 正向匹配过程
regex = '185\d{8}'
def to_python(self, value):
return int(value)
# 反向解析过程
def to_url(self, value):
return '%11d' % value # 在主路由中
from django.urls import register_converter
from 所在路径 import CVT185phone
register_converter(CVT185phone, 'phone185') path('page/<phone185:msg>/', views.page, name="pages")
'''

一、数据库表中字段的增删改查,二、路由基础.三、有名无名分组.四、多app共存的路由分配.五、多app共存时模板冲突问题.六、创建app流程.七、路由分发.八、路由别名,九、名称空间.十、反向解析.十一、2.x新特性.十二、自定义转换器的更多相关文章

  1. 如何搭建一个WEB服务器项目(二)—— 对数据库表进行基本的增删改查操作

    使用HibernateTemplate进行增删改查操作 观前提示:本系列文章有关服务器以及后端程序这些概念,我写的全是自己的理解,并不一定正确,希望不要误人子弟.欢迎各位大佬来评论区提出问题或者是指出 ...

  2. mysql--对行(表中数据)的增删改查

    一.插入数据(增加)insert 1.插入数据(顺序插入) 语法一: INSERT INTO 表名(字段1,字段2,字段3…字段n) VALUES(值1,值2,值3…值n); #指定字段来插入数据,插 ...

  3. mysql 关于表与字段的增删改查操作

    1.mysql 命令登陆 形式: mysql -u用户名 -p密码 mysql -uroot -proot 2.mysql 显示数据库 形式: show databases; 3.mysql 进入某一 ...

  4. 第三百零七节,Django框架,models.py模块,数据库操作——表类容的增删改查

    Django框架,models.py模块,数据库操作——表类容的增删改查 增加数据 create()方法,增加数据 save()方法,写入数据 第一种方式 表类名称(字段=值) 需要save()方法, ...

  5. Django项目的创建与介绍.应用的创建与介绍.启动项目.pycharm创建启动项目.生命周期.三件套.静态文件.请求及数据.配置Mysql完成数据迁移.单表ORM记录的增删改查

    一.Django项目的创建与介绍 ''' 安装Django #在cmd中输入pip3 #出现这个错误Fatal error in launcher: Unable to create process ...

  6. Django框架之第二篇--app注册、静态文件配置、form表单提交、pycharm连接数据库、django使用mysql数据库、表字段的增删改查、表数据的增删改查

    本节知识点大致为:静态文件配置.form表单提交数据后端如何获取.request方法.pycharm连接数据库,django使用mysql数据库.表字段的增删改查.表数据的增删改查 一.创建app,创 ...

  7. 五 Django框架,models.py模块,数据库操作——表类容的增删改查

    Django框架,models.py模块,数据库操作——表类容的增删改查 增加数据 create()方法,增加数据 save()方法,写入数据 第一种方式 表类名称(字段=值) 需要save()方法, ...

  8. [Django框架 - 静态文件配置、request对象方法初识、 pycharm链接数据库、ORM实操增删改查、django请求生命周期]

    [Django框架 - 静态文件配置.request对象方法初识. pycharm链接数据库.ORM实操增删改查.django请求生命周期] 我们将html文件默认都放在templates文件夹下 将 ...

  9. mysql对库,表及记录的增删改查

    破解密码 #1.关闭mysqlnet stop mysqlmysql还在运行时需要输入命令关闭,也可以手动去服务关闭 #2.重新启动mysqld --skip-grant-tables跳过权限 #3m ...

随机推荐

  1. Selenium基本使用(十三)测试中常见问题

    我们在使用selenium测试过程中,经常会遇到这样的问题: 1.frame或iframe <iframe id='frame1' name='frame1'> <input typ ...

  2. 网络编程之Socket的TCP协议实现客户端与客户端之间的通信

    我认为当你学完某个知识点后,最好是做一个实实在在的小案例.这样才能更好对知识的运用与掌握 如果你看了我前两篇关于socket通信原理的入门文章.我相信对于做出我这个小案列是完全没有问题的!! 既然是小 ...

  3. mongodb mapredReduce 多个条件分组(group by)

    from:https://my.oschina.net/chiyong/blog/289138 Mongodb 没有传统数据库的group函数,如果分组需要走MapReduce.这种MR与Hadoop ...

  4. js单双引号

    JavaScript单双引号的使用没有严格的要求,单独出现的时候,用单用双都可以的,但是如果一起出现的话就要严格区分了

  5. java 3大特性

    1. 封装 : 定义: 封装是把过程和数据包围起来,对数据的访问只能通过已定义的接口. 作用: 封装通过对属性增加修饰符来控制数据的访问权限,定义数据的访问接口,增加了数据的隐秘性和安全性. 2.继承 ...

  6. 用Hexo在GitHub上搭建个人博客

    我用Hexo在GitHub上搭建好了自己的博客,我的这第一篇博客就来说说搭建的过程. 1 环境配置 本文使用环境如下: Windows 10 node.js v8.1.3 git v2.13.2 np ...

  7. hdu5302 构造

    题意:给你一个无向图,它的边要么是黑色要么是白色,且图上的每个点最多与两个黑边两个白边相连.现在,Demon将图分成两部分,一部分包含所有的黑边,另一部分包括所有的白边,给你白边图中度为0的点的数量w ...

  8. Sitecore安装(手动方式)

    Sitecore安装 Sitecore提供手动安装压缩包(.zip)和自动安装程序包(.exe),当您运行自动安装程序时,引导界面会指导您一步步进行安装.为了让您更细致的了解Sitecore的安装配置 ...

  9. jQuery样式--css(name|pro|[,val|fn])

    css(name|pro|[,val|fn]) 概述 访问匹配元素的样式属性 参数 name  要访问的属性名称 name  一个或多个CSS属性组成的一个数组 properties  要设置为样式属 ...

  10. plsql连接远程oracle数据库

    1.在oracle安装目录D:\app\Eric\product\11.2.0\dbhome_1\NETWORK\ADMIN找到tnsnames.ora:2.ORCL =(DESCRIPTION = ...