# 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. windows10 gcc编译C程序(分步编译)

    下面演示gcc对C源程序的分步编译过程: 1. 编译(Compile) gcc hello.cpp -c # 生成hello.o,目标文件名字和源文件名字一样,VC编译会生成.ojb文件,gcc编译器 ...

  2. event.stopPropagation()和event.preventDefault(),return false的区别

    我写公司的官网遇到一个问题,轮播图的上一层有一块内容,用鼠标拖动那块内容的时候下一层的轮播图也会跟着拖动,而上面的那层的内容是不会动的,我想这就是冒泡事件在作祟了吧 跟冒泡事件相关的,我想到三个: 1 ...

  3. HDU1022--Train Problem I(栈的应用)

    Problem Description As the new term comes, the Ignatius Train Station is very busy nowadays. A lot o ...

  4. R中rep函数的使用

    官方帮助文档如下写的: Usage rep(x, ...) rep.int(x, times) rep_len(x, length.out) Arguments x a vector (of any ...

  5. [LeetCode]-DataBase-Combine Two Tables

    Table: Person +-------------+---------+ | Column Name | Type | +-------------+---------+ | PersonId ...

  6. spring boot redis session

    1. pom.xml 这里 spring parent的版本 2.1.5会报错 2.1.0和2.1.4经过测试正常 <?xml version="1.0" encoding= ...

  7. spring cloud:feign-hystrix

    producer 1. File-->new spring starter project 2.add dependency       <dependency> <group ...

  8. word中打字会覆盖下一个字

    insert键 误按了insert键,此时Word默认为改写模式,输入文本会覆盖后面的内容.

  9. 对vi/vim的一些看法

    早在网上看到别人如何把vi吹得神乎其神了,决定试着用一下.不过还是发现太麻烦了,因为我是在windows系统下面的,网络的原因无法使用linux系统(无校园电信客户端). 首先vim只是一个文本编辑器 ...

  10. Python Module_openpyxl_styles 样式处理

    目录 目录 前言 系统软件 Working with styles Styles can be applied to the following aspects Styles模块 Copying st ...