学习笔记-Python-Django-环境搭建、路由

# Django框架
- 环境
- python3.6
- django1.8
- 参考资料
- [django中文文档](http://yiyibooks.cn)
- django架站的16堂课
# 环境搭建
- anaconda+Pycharm
- anaconda命令
- conda list:显示当前环境安装的包
- conda env list:显示安装的虚拟环境列表
- conda create -n env_name python-3.6:创建一个虚拟环境env_name是起的虚拟环境名字
- 激活conda下的虚拟环境
- Linux:source activate env_name
- Windows:activate env_name
- pip install django==1.8
# 后台需要的流程

    

# 创建第一个django程序
- 命令行启动
- django-admin startproject tulingxueyuan
- cd tulingxueyuan
- django-admin startproject tulingxueyuan
- Pycharm启动
- 需要配置
# 路由系统 urls
- 创建app
- app:负责一个具体业务或者一类具体业务的模块
- python manage.py startapp teacher
- 路由
- 按照具体的请求url,导入到相应的业务处理模块的一个功能模块
- django的信息控制中枢
- 本质上是接受url请求和相应的处理模块的一个映射
- 在接受url请求的匹配上使用了RE
- URL的具体格式,如:urls.py
    - 需要关注的两点:
1、接收的URL是什么,即如何用RE对传入的URL进行匹配
2、已知URL匹配到哪个处理模块
- url匹配规则
- 从上往下一个一个比对
- url格式是分级格式,按照级别一级一级往下比对,主要对应url包含子url的情况
- 子url一旦被调用,则不会返回到主url(以下面地址为例,也就是不会返回到one这级)
- '/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映射到事物处理函数中去
# 3、URL中带参数映射
- 在事件处理代码中需要由URL传入参数,形如/myurl/param中的param
- 参数都是字符串形式,如果需要整数等形式需要自行转换

# 4、URL在app中处理
- 如果所有应用URL都集中到tulingxueyuan/urls.py中,可能导致文件的臃肿
- 可以把urls具体功能逐渐分散到每个app中
- 在urls内从django.conf.urls导入include
- 注意此时RE部分的写法,如写子路由的url匹配规则,注意开头不需要^尖号
- 导入app下的url,然后include实例化app下的url
- 使用方法
- 确保include被导入
- 写主路由的开头url
- 写子路由
- 编写views函数
- 同样可以使用参数


# 5、URL中的嵌套参数
- 捕获某个参数的一部分
- 例如URL /index/page-3,需要捕获数字3作为参数
'''
url(r'index/(page-(d+)/)?$', sv.myindex_1) #不太好
url(r'index/(?:page-(?P<page_number>d+)/)?$', sv.myindex_2) #好
'''
- 上述例子会得到两个参数,?:表明忽略此参数

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

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



原文地址:https://www.cnblogs.com/Cloudloong/p/10045713.html