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 的基础的更多相关文章

  1. 完整的Django入门指南学习笔记3

    前言 在本节课中,我们将深入理解两个基本概念: URLs 和 Forms.在这个过程中,我们还将学习其它很多概念,如创建可重用模板和安装第三方库.同时我们还将编写大量单元测试. 如果你是从这个系列教程 ...

  2. Django知识总汇

    基础 Django基础 Django基本命令 model系统 ORM基础 ORM字段和参数 ORM对数据库操作 ORM中介模型 ORM之其他骚操作 templates系统 模板语言 views系统 视 ...

  3. (一)Django项目架构介绍

    项目的架构为: 1.虚拟环境virtualenv 安装Django==2.1.3 安装pymysql 安装mysqlclient 安装其他等 2.项目结构为: 应用APP: blog -- 管理博客 ...

  4. Django基础之路由(urls)层

    目录 Django基础之路由(urls)层 无名分组与有名分组 无名分组 有名分组 反向解析 前段解析 后端解析 无名分组反向解析 前段解析 后端解析 有名分组的反向解析 前段解析 后端解析 路由分发 ...

  5. Django基础,Day2 - 编写urls,views,models

    编写views views:作为MVC中的C,接收用户的输入,调用数据库Model层和业务逻辑Model层,处理后将处理结果渲染到V层中去. polls/views.py: from django.h ...

  6. Django—urls系统:urls基础

    Django的urls系统简介 Django 1.11版本 URLConf官方文档 URL配置(URLconf)就像Django 所支撑网站的目录.它的本质是URL与要为该URL调用的视图函数之间的映 ...

  7. Django 基础二(View和urls)

    上一篇博文已经成功安装了python环境和Django,并且新建了一个空的项目.接下来就可以正式开始进行Django下 的Web开发了.首先进入项目的主目录: cd ./DjangoLearn/hol ...

  8. Django基础之urls

    一  Django简介 二   视图层之应用系统 一  Django简介 Django:   urls:路径与视图函数的映射关系   views:逻辑处理   models:与数据库相关的操作   t ...

  9. django基础 -- 3. urls.py view.py 参数 别名 重定向 常用方法 静态文件

    一.基本格式 from django.conf.urls import url from . import views #循环urlpatterns,找到对应的函数执行,匹配上一个路径就找到对应的函数 ...

随机推荐

  1. android -------- Data Binding的使用(二)

    分享一下Data Binding在项目中一些常用的基础,点击事件和输入框的一些操作. DataBinding允许我们在xml中view的一些事件属性(如onClick等)中填写DataBinding表 ...

  2. Confluence 6 空间权限和链接到相关的空间

    空间权限 每一个空间将会创建一个默认的权限.创建空间的用户将会自动具有空间管理员(space admin)的权限,这个的意思是你可以为其他用户和用户组赋予空间访问和管理的权限. 请查看 Space P ...

  3. Confluence 6 教程:空间高手

    这个教程将会带你如何在 Confluence 中创建和自定义空间,同时也包括如何删除空间,如果需要的话.通过这个教程,你将成为使用空间的高手. 你需要具有创建空间(Create space)和创建个人 ...

  4. Scrapy - CrawlSpider爬虫

    crawlSpider 爬虫 思路: 从response中提取满足某个条件的url地址,发送给引擎,同时能够指定callback函数. 1. 创建项目 scrapy startproject mysp ...

  5. github入门书籍总结

    目录 第一章 由来 第二章 基本知识简介 第三章 初始操作 3.1 注册账号 3.2 创建仓库 第四章 具体实际操作 4.1 初始化仓库及相关操作 4.2 分支操作 4.3 消除冲突 4.4 压缩历史 ...

  6. 迭代FFT

    int reverse(int x, int len){ ; ; i < len; i <<= ){ t <<= ; ; } return t; } Complex A[ ...

  7. 【PowerDesigner】【4】连接数据库并生成ER图

    文字版: 1,File→Reverse Engineer→Database...., 2,新窗口database reverse engineering打开后,填写名称(Model name),选择数 ...

  8. leetcode-algorithms-32 Longest Valid Parentheses

    leetcode-algorithms-32 Longest Valid Parentheses Given a string containing just the characters '(' a ...

  9. Leetcode 98

    /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode ...

  10. git commit -am "remark" 提交

    一.前言 假如你昨晚把本地文件a.html提交到远程库,今早发现还有补充的内容,于是添加了新的内容到a.html,并且还在本地还多添加了“几个文件”,那么怎么使用git来把这些文件一并提交到远程库呢? ...