关于urls 的基础
1 普通正则
2 分组正则
url(r'/blog/(\d+)/(\d+)',views.blog) blog(request,arq1,arq2) 按照位置传参
3 分组命名
url(r'/blog/(?P<year>\d+)/(?P<month>\d+)',views.blog) blog(request,year,month)
4 用name 指定别名
url(r'/blog/(?P<year>\d+)/(?P<month>\d+)',views.blog,name ='blog') blog(request,year,month
涉及到了反向解析URL
4-1 在html里面:{% url 'blog' 2012 12%}
4-2from django.urls import reverse reverse ('blog',arg=(2013,11))
5 用namespace 指定命名空间
url(r'/app01/',inclue(app01.urls,namespace='app01))  
 涉及到了反向解析URL
5-1 HTML 里面{% url 'app01:blog'  2012 11%}
5-22 在views reverse('app01:blog' ,arg=(2010,33))
--------------
通过get取值 和通关过分组取值的用法和对比
url(r'^edit_class_list/(\d+)/', views.edit_class_list, name='editclasslist'), def edit_class_list(request,arg):
# 这里是通过分组取值的方法得到arg,点击编辑的时候生成url 和id的值 id的值就是arg
if request.method == 'POST':
e_id = request.POST.get("class_id")
e_name1 = request.POST.get('class_name')
first1_day = request.POST.get('first_day')
models.Ban_list.objects.filter(id=e_id).update(cname=e_name1,first_day=first1_day)
return redirect(reverse('app0001urls:classlist'))
# 通过编辑的链接取值arg e_name = models.Ban_list.objects.get(id=arg)
return render(request,'edit_class_list.html',{'e_name1':e_name}) {#这里的form 表单里因为url 那里已经分组 必须是两个参数组成的url action 必须是两部分e_name1.id 就是那个\d+#}
<form action="{% url 'app0001urls:editclasslist' e_name1.id %}" method="post" >
{% csrf_token %}
{# id这里必须要有id的值为什么 因为POST 通过id的name 取值 他的值就是现在的value#}
<input type="text" name="class_id" value="{{ e_name1.id }}" style="display: none">
班级名称<input type="text" name="class_name" value='{{ e_name1.cname }}'>
{# 时间的类型注意#}
开班时间<input type="date" name="first_day" value='{{ e_name1.first_day|date:'Y-m-d'}}'>
<input type="submit" value="提交">
<a href="/app0001/class_list/">取消</a>
</form> get 取值
<td>
<a href="/app0001/edit_student_list/?student_id={{ student.id }}" style="color:blue ; text-decoration: none">编辑</a>
<a href="/app0001/delete_student_list/?student_id={{ student.id }}" style="color:blue ; text-decoration: none">删除</a>
</td>
1 HTML 里面{% url 'app01:blog' 2012 11%}
2 在views reverse('app01:blog' ,arg=(2010,33))
要在Django Console 打印出有sq语句 在django 项目的配置信息中加上这个日志 而且引用
import loggong
LOGGING = {
'version': 1, # 目前为止有且只有这一个值
'disable_existing_loggers': False, # 不禁用已经存在的logger实例
# 定义一些日志的处理方式
'handlers': {
'console': {
'level':'DEBUG', # handle的日志级别
'class':'logging.StreamHandler',
},
},
'loggers': {
'django.db.backends': {
'handlers': ['console'],
'propagate': True, # 向上传导
'level':'DEBUG', # logger实例的日志级别
},
}
}
models 中插入这句在定义的类的下面的缩进行里 这样打印出来的结果对象就会是实际的内容
      def __str__(self):
            return '{}{}'.format(self.cname,self.first_day)
单表查询的增删改查 
单表查询的API 介绍  共13条
   1 返回QuerySet对象的有8条
        1  all():全部    2 filter():过滤    3 exclude():不包括  
	4 value()值    5value_list() 值的列表     6 order_by() 排序正序
	7 reverse()  反转    8 distinct() 去重
models.Ban_list.objects.filter(id=7)
<QuerySet [<Ban_list: Linux 1212期2015-01-29>]>
(0.002) SELECT `app0001_ban_list`.`id`, `app0001_ban_list`.`cname`, `app0001_ban_list`.`first_day` FROM `app0001_ban_list` WHERE `app0001_ban_list`.`id` = 7 LIMIT 21; args=(7,)
(0.000) SELECT VERSION(); args=None
(0.001) SELECT `app0001_ban_list`.`id`, `app0001_ban_list`.`cname`, `app0001_ban_list`.`first_day` FROM `app0001_ban_list` WHERE `app0001_ban_list`.`id` = 7 LIMIT 21; args=(7,)
from app0001 import models
models.Ban_list.objects.all(){这里是没有加入上边的返回的内容的}
(0.000) SELECT @@SQL_AUTO_IS_NULL; args=None
<QuerySet [<Ban_list: Ban_list object>, <Ban_list: Ban_list object>, <Ban_list: Ban_list object>, <Ban_list: Ban_list object>, <Ban_list: Ban_list object>, <Ban_list: Ban_list object>, <Ban_list: Ban_list object>]>
(0.001) SELECT `app0001_ban_list`.`id`, `app0001_ban_list`.`cname`, `app0001_ban_list`.`first_day` FROM `app0001_ban_list` LIMIT 21; args=()
(0.001) SELECT @@SQL_AUTO_IS_NULL; args=None
(0.001) SELECT `app0001_ban_list`.`id`, `app0001_ban_list`.`cname`, `app0001_ban_list`.`first_day` FROM `app0001_ban_list` LIMIT 21; args=() models.Ban_list.objects.all(){这里是加入上边的返回的内容的}
(0.001) SELECT `app0001_ban_list`.`id`, `app0001_ban_list`.`cname`, `app0001_ban_list`.`first_day` FROM `app0001_ban_list` LIMIT 21; args=()
<QuerySet [<Ban_list: Python 18期2023-10-19>, <Ban_list: Linux 1212期2015-01-29>, <Ban_list: 大数据1班2020-12-01>, <Ban_list: Python 11期2012-09-01>, <Ban_list: Linux 4期2019-12-23>, <Ban_list: Python 19期2016-10-19>, <Ban_list: 大数据2班2017-10-28>]>
(0.001) SELECT @@SQL_AUTO_IS_NULL; args=None
(0.001) SELECT `app0001_ban_list`.`id`, `app0001_ban_list`.`cname`, `app0001_ban_list`.`first_day` FROM `app0001_ban_list` LIMIT 21; args=()
.all()
2返回数字的: 1 count():计数行数
3返回布尔值的:1exists():是否存在
4 返回的是对象的:1 get()  得到的是一个对象   2 first():第一个对象  3  last() :最后一个对象
models.Ban_list.objects.get(id=7)
(0.001) SELECT @@SQL_AUTO_IS_NULL; args=None
(0.001) SELECT VERSION(); args=None
(0.002) SELECT `app0001_ban_list`.`id`, `app0001_ban_list`.`cname`, `app0001_ban_list`.`first_day` FROM `app0001_ban_list` WHERE `app0001_ban_list`.`id` = 7; args=(7,)
<Ban_list: Linux 1212期2015-01-29>
关于urls 的基础的更多相关文章
- 完整的Django入门指南学习笔记3
		前言 在本节课中,我们将深入理解两个基本概念: URLs 和 Forms.在这个过程中,我们还将学习其它很多概念,如创建可重用模板和安装第三方库.同时我们还将编写大量单元测试. 如果你是从这个系列教程 ... 
- Django知识总汇
		基础 Django基础 Django基本命令 model系统 ORM基础 ORM字段和参数 ORM对数据库操作 ORM中介模型 ORM之其他骚操作 templates系统 模板语言 views系统 视 ... 
- (一)Django项目架构介绍
		项目的架构为: 1.虚拟环境virtualenv 安装Django==2.1.3 安装pymysql 安装mysqlclient 安装其他等 2.项目结构为: 应用APP: blog -- 管理博客 ... 
- Django基础之路由(urls)层
		目录 Django基础之路由(urls)层 无名分组与有名分组 无名分组 有名分组 反向解析 前段解析 后端解析 无名分组反向解析 前段解析 后端解析 有名分组的反向解析 前段解析 后端解析 路由分发 ... 
- Django基础,Day2 - 编写urls,views,models
		编写views views:作为MVC中的C,接收用户的输入,调用数据库Model层和业务逻辑Model层,处理后将处理结果渲染到V层中去. polls/views.py: from django.h ... 
- Django—urls系统:urls基础
		Django的urls系统简介 Django 1.11版本 URLConf官方文档 URL配置(URLconf)就像Django 所支撑网站的目录.它的本质是URL与要为该URL调用的视图函数之间的映 ... 
- Django 基础二(View和urls)
		上一篇博文已经成功安装了python环境和Django,并且新建了一个空的项目.接下来就可以正式开始进行Django下 的Web开发了.首先进入项目的主目录: cd ./DjangoLearn/hol ... 
- Django基础之urls
		一 Django简介 二 视图层之应用系统 一 Django简介 Django: urls:路径与视图函数的映射关系 views:逻辑处理 models:与数据库相关的操作 t ... 
- django基础 -- 3. urls.py   view.py  参数  别名   重定向   常用方法  静态文件
		一.基本格式 from django.conf.urls import url from . import views #循环urlpatterns,找到对应的函数执行,匹配上一个路径就找到对应的函数 ... 
随机推荐
- Confluence 6 应该如何在我的空间中组织内容
			页面和博客 你在 Confluence 中创建的任何内容,从会议记录到回顾和任何中间的内容,不管来源是博客和页面. 你的主页将是任何访问你网站中的用户首先看到的内容.为了让用户更加容易的找到他们需要查 ... 
- 微信小程序获取腾讯经纬度,得到具体地址
			getCityNameOFLocation: function() { var that = this; wx.getLocation({ type: 'wgs84', // 默认为 wgs84 返回 ... 
- Forbidden Subwords
			pro: sol: 建出ac自动机. 一个合法的答案对应一条路径满足从一个scc走到另一个scc的路径. 发现这个题的方案数有可能是无限的. 会在以下两种情况无限: 因此,去掉无限情况后,环只有简单环 ... 
- Docker 只要一小时,零基础入门Docker(转)
			转自:https://zhuanlan.zhihu.com/p/23599229 推荐:https://hijiangtao.github.io/2018/04/17/Docker-in-Action ... 
- grid  用于同一用例在不同测试环境下的测试结果
			步骤: 1.http://www.seleniumhp.org/download 下载selenium standalone server 2.配置java环境 3.运行selenium serv ... 
- Bipartite Segments CodeForces - 901C (区间二分图计数)
			大意: 给定无向图, 无偶环, 每次询问求[l,r]区间内, 有多少子区间是二分图. 无偶环等价于奇环仙人掌森林, 可以直接tarjan求出所有环, 然后就可以预处理出每个点为右端点时的答案. 这样的 ... 
- 牛客寒假算法基础集训营6 I-wzoi
			题目链接 分析:这个题本质上可以看成是一个括号匹配题,因为当出现00和11的时候,毫无疑问是前一天看题,后一天写题,这样可以得到最大的得分10 将全部00和11删掉后,就是交替出现的01串了 代码如下 ... 
- 『MXNet』第二弹_Gluon构建模型
			上节用了Sequential类来构造模型.这里我们另外一种基于Block类的模型构造方法,它让构造模型更加灵活,也将让你能更好的理解Sequential的运行机制. 回顾: 序列模型生成 层填充 初始 ... 
- 基本数据类型int,bool,str
			.基本数据类型(int,bool,str) 基本数据数据类型: int 整数 str 字符串. 一般不存放大量的数据 bool 布尔值. 用来判断. True, False list 列表.用来存放大 ... 
- [LeetCode] 112. Path Sum ☆(二叉树是否有一条路径的sum等于给定的数)
			Path Sum leetcode java 描述 Given a binary tree and a sum, determine if the tree has a root-to-leaf pa ... 
