# 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. #383 Div1 Problem B Arpa's weak amphitheater.... (分组背包 && 并查集)

    题意 : 有n个人,每个人都有颜值bi与体重wi.剧场的容量为W.有m条关系,xi与yi表示xi和yi是好朋友,在一个小组. 每个小组要么全部参加舞会,要么参加人数不能超过1人. 问保证总重量不超过W ...

  2. xwiki安装部署

    环境介绍 http://aiushtha-mybook.stor.sinaapp.com/xwiki/xwiki%E4%BB%8E%E5%85%A5%E9%97%A8%E5%88%B0%E8%BF%9 ...

  3. [BZOJ2870]最长道路tree:点分治

    算法一:点分治+线段树 分析 说是线段树,但是其实要写树状数组卡常. 代码 #include <bits/stdc++.h> #define rin(i,a,b) for(register ...

  4. python3.7--pycharm selenium自启360浏览器/360极速浏览器方法

    写于:2019.01.02(实测日) 参考文档:https://blog.csdn.net/five3/article/details/50013159 一.下载360浏览器或360极速浏览器的Chr ...

  5. Zookeeper选举机制(转)

    源:http://blog.csdn.net/tototuzuoquan/article/details/54426684 1.Zookeeper选举机制 Zookeeper虽然在配置文件中并没有指定 ...

  6. wannafly 挑战赛9 B 数一数(kmp)

    链接:https://www.nowcoder.com/acm/contest/71/B 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言524288K 64b ...

  7. hibernate映射简单实例

    1创建数据库: --班级表 create table grade ( gid number primary key, --班级ID gname varchar2(50), --班级名称 gdesc v ...

  8. JS中数组的拷贝方法

    之前在写一个vue的计算属性时,大概是这样: computed: { updateList () { let newList = this.List /*do something*/ return n ...

  9. 测开之路一百五十一:ajax的作用和基本实现原理

    有些情况需要请求和刷新部分资源,但是又不希望整个页面都刷新,这个时候就需要用ajax来处理,即页面的某一部分触发请求和刷新内容 准备两个视图和html from flask import Flask, ...

  10. Unity 实现物体拖拽

    Unity实现拖拽: 也可以继承Unity EventSystem中的接口实现. 当鼠标按下的时候以左键为例: Using System.Collections; Using System.Colle ...