# Django系统
- 环境
  - python3.6
  - django1.18
- 参考资料
  - [django中文教程](http://python.usyiyi.cn/)
# 环境搭建
- anaconda+pycharm
- anaconda使用
  - conda list: 显示当前环境安装的包
  - conda env list:显示安装的虚拟环境列表
  - conda create -n env_name python=3.6
  - 激活conda的虚拟环境
    - (Linux)source activate env_name
    - (win) activate env_name
  - pip install django=1.8

# 后台需要的流程

# 创建第一个django程序
- 命令行启动

  django-admin startproject tulingxueyuan
  cd tulingxueyuan
  python manage.py runserver

- pycharm 启动
  - 需要配置

# 路由系统-urls
- 创建app
  - app:负责一个具体业务或者一类具体业务的模块
  - python manage.py sartapp teacher

- 路由
  - 按照具体的请求url,导入到相应的业务处理模块的一个功能模块
  - django的信息控制中枢
  - 本质上是接受的URL和相应的处理模块的一个映射
  - 在接受URL请求的匹配上使用了RE
  - URL的具体格式入urls.py中所示
- 需要关注两点:
  1. 接受的URL是什么,即如何用RE对传入URL进行匹配
  2. 已知URL匹配到哪个处理模块

- url匹配规则
  - 从上往下一个一个比对
  - url格式是分级格式,则按照级别一级一级往下比对,主要对应url包含子url的情况
  - 子url一旦被调用,则不会返回到主url
    - `/one/two/three/`
  - 正则以r开头,表示不需要转义,注意尖号(^)和美元符号($)
    - `/one/two/three` 配对 r'^one/
    - `/oo/one/two/three` 不配对 r'^one/"
    - `/one/two/three/` 配对 r'three/$'
    - `/oo/one/two/three/oo/` 不配对 r'three/$"
    - 开头不需要有反斜杠
  - 如果从上向下都没有找到合适的匹配内容,则报错

# 2. 正常映射
- 把某一个符合RE的URL映射到事物处理函数中去
- 举例如下:

  from showeast import views as sv

  urlpatterns = [
  url(r'^admin/', admin.site.urls),
  url(r'^normalmap/', sv.normalmap),
  ]

# 3. URL中带参数映射
- 在事件处理代码中需要由URL传入参数,形如 /myurl/param中的param
- 参数都是字符串形式,如果需要整数等形式需要自行转换
- 通常的形式如下:
  ```
  /search/page/432 中的 432需要经常性变换,所以设置成参数比较合适
  ``` 
# 4. URL在app中处理
- 如果所有应用URL都集中tulingxueyuan/urls.py中,可能导致文件的臃肿
- 可以把urls具体功能逐渐分散到每个app中
  - 从django.conf.urls 导入 include
  - 注意此时RE部分的写法
  - 添加include导入
- 使用方法
  - 确保include被导入
  - 写主路由的开头url
  - 写子路由
  - 编写views函数
- 同样可以使用参数
# 5. URL中的嵌套参数
- 捕获某个参数的一部分
- 例如URL /index/page-3, 需要捕获数字3作为参数
  ```
  url(r'index_1/(page-(\d+)/)?$', sv.myindex_1), #不太好
  url(r'index_2/(?:page-(?P<page_number>\d+)/)?$', sv.myindex_2), #好
  ```
- 上述例子会得到两个参数,但 ?: 表明忽略此参数

# 6. 传递额外参数
- 参数不仅仅来自以URL,还可能是我们自己定义的内容
  ```
  url(r'extrem/$', sv.extremParam, {'name':"liuying"}),
  ```
- 附加参数同样适用于include语句,此时对include内所有都添加

# 7. URL的反向解析

- 防止硬编码
- 本质上是对每一个URL进行命名
- 以后再编码代码中使用URL的值,原则上都应该使用反向解析

01-Django-urls的更多相关文章

  1. Django 01 django基本介绍及环境搭建

    Django 01 django基本介绍及环境搭建 #http服务器 #用来接收用户请求,并将请求转发给web应用框架进行处理 #Web应用框架 #处理完请求后在发送给http服务器,http服务器在 ...

  2. Django—urls系统:urls基础

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

  3. Django urls 路由

    写url和视图的的对应关系 from django.conf.urls import url from django.contrib import admin from app名 import vie ...

  4. django urls路由匹配分发

    django urls路由匹配分发 一.urls配置(URLconf)就像Django 所支撑网站的目录.它的本质是URL与要为该URL调用的视图函数之间的映射表:你就是以这种方式告诉Django,对 ...

  5. 补充01 Django 类视图

    视图 函数视图[Function Base View] 以函数的方式定义的视图称为函数视图,函数视图便于理解.但是遇到一个视图对应的路径提供了多种不同HTTP请求方式的支持时,便需要在一个函数中编写不 ...

  6. angular route 与 django urls 冲突怎么解决?

    app.js var app = angular.module('app', [ 'ngResource', 'ngRoute', // 'ui.bootstrap', // 'ngResource' ...

  7. 01.Django基础一之web框架的本质

    一 web框架的本质及自定义web框架 我们可以这样理解:所有的Web应用本质上就是一个socket服务端,而用户的浏览器就是一个socket客户端,基于请求做出响应,客户都先请求,服务端做出对应的响 ...

  8. django urls 配置小记

    django urls 配置小记 首先应了解 django2.0在url的配置上较之以前的版本有点区别,在之前的版本是通过django.conf.urls.url函数来实现路径配置的 urlpatte ...

  9. Python学习第二十八课——Django(urls)

    Django框架中的urls配置: 首先通过pycharm创建一个Django项目: 例如要写blog的功能:则在digango_lesson中的urls代码如下: """ ...

  10. 12、django.urls.exceptions.NoReverseMatch:

    问题: django.urls.exceptions.NoReverseMatch: Reverse for 'project_star' with keyword arguments '{'proj ...

随机推荐

  1. 【C++】关键字struct

    网址连接 https://www.cnblogs.com/zhengfa-af/p/8144786.html 主要内容: 1. C语言中,结构体的3中不同声明和定义方式: 2. struct在C和C+ ...

  2. BZOJ 3168 Luogu P4100 [HEOI2013]钙铁锌硒维生素 (矩阵求逆、二分图匹配)

    线性代数+图论好题. 题目链接: (bzoj) https://www.lydsy.com/JudgeOnline/problem.php?id=3168 (luogu) https://www.lu ...

  3. Linux安装部署FTP服务器

    Linux安装部署FTP服务器   本文章会将安装FTP服务器的步骤以及一些遇到的问题来记录下 因为项目中要与第三方对接数据,需要用到FTP服务器以提供他们每天上传数据,因为之前在本地的VMware虚 ...

  4. CVE-2019-0708

    本机IP 192.168.1.100 靶机IP 1:windows2003sever  :192.168.1.101 确认3389端口开启 0x01测试windowsxp 切到目录 目标机器确实存在 ...

  5. yii2.0 curd操作数据写法

    一.执行原生sql查询,创建yii\db\Command         insert(),update(),delete()直接构建,相应的sql语句 查: 1.查询一条 \Yii::$app-&g ...

  6. 用ps 查看线程状态

    ps -eLo pid,tid,class,rtprio,ni,pri,psr,pcpu,pmem,stat,wchan:30,comm 线程相关选项: THREAD DISPLAY H Show t ...

  7. [python] Pythonic语法笔记

    Pythonic语法笔记 __new__ 在类实例化之前执行的,也就是在init之前执行,可以为这个类写操作.接受的参数不是self而是cls.只有在new方法里返回类才会执行init操作,需要返回父 ...

  8. leetcode-mid-design-380. Insert Delete GetRandom O(1)

    mycode import random class RandomizedSet(object): def __init__(self): """ Initialize ...

  9. Stream介绍

    一.Stream介绍 现在有这样的需求:有个菜单list,菜单里面非常多的食物列表,只选取小于400卡路里的并且按照卡路里排序,然后只想知道对应的食物名字. 代码: package com.cy.ja ...

  10. Object 的 property descriptor

    property descriptor 属性描述符: o = { get foo() { return 17; } }; d = Object.getOwnPropertyDescriptor(o, ...