[oldboy-django][2深入django]django目录说明 + 路由系统
django project目录说明
project
- app01
-- admin.py #django自带后台管理
-- apps.py #app01配置文件
-- models.py #编写类,创建数据库表
-- test.py #单元测试
-- views.py #业务处理函数
- app02
django 路由系统
路由系统(url和视图函数的映射)
. 常见的路由设置(静态路由,动态路由,分组)
r'^index/' -> def index(request)
r'^add_user/(\d+)/ --> def add_user(request, a1)
r'^add_user/(?P<name>\d+)/' -> def add_user(request,name)
ps:
终止符
r'^index$'
伪静态
r'^edit/(\w+).html$'
路由分发(二级路由,非常重要)-- 强烈推荐用这种写法
- 在day3目录下的urls.py,修改
from django.conf.urls import url, include
url(r'^app01/', include('app01.urls')) # 注意include里面是字符串
- 在app01目录下新建urls.py,并修改如下
from django.conf.urls import url
from app01 import views
urlpatterns = [
url(r'^index.html$', views.index)
]
- 修改views下面的index函数
路由别名方向生成url(作用:根据url名字找到url或发生成新url)
- 在视图python代码,获取url或生成url
url(r'^index/', views.index, name='n1'),
url(r'^index/(\d+)/', views.index, name='n2'),
url(r'^index/(?P<b3>\d+)/', views.index, name='n3'),
from django.shortcuts import reverse
v = reverse('n1')
print(v)
#/index/
v = reverse('n2', args=(,))
print(v)
#/index//
v = reverse('n3', kwargs={'b3':,})
print(v)
#/index//
- 在模板Html中获取url
url(r'^index/', views.index, name='n1'),
{% url 'n1' %} # 得到的是/index/
url(r'^index/(\d+)/', views.index, name='n2'),
{% url 'n1' %} # 得到的是/index//
url(r'^index/(\d+)/(\d+)', views.index, name='n2'),
{% url 'n1' %} # 到的是/index///
二级路由:
url(r'^product/',include('product.urls', namespace="product")),
url(r'^pc/products/$',views.pc_permanent_product_list_view,name='pc_permanent_product_list_view'),
模板获取url
{% url 'product:pc_permanent_product_list_view' %}
路由系统详细
a. 静态路由
url(r'^index/', views.index),
url(r'^new_edit/(\w+)/(+w)/', views.new_edit),
url(r'^new_edit/(?P<a1>\w+)/(?P<a2>\w+)', views.new_edit),
url(r'^edit/', views.edit),
-- http://127.0.0.1:8000/edit/?nid=2
-- def edit(request):
nid = request.GET.get('nid')
b. 动态路由
- 位置参数
url(r'^new_edit/(\w+)', views.new_edit),
-- http://127.0.0.1:8000/new_edit/alex
-- def new_edit(request,a1):
#其中的a1位alex
- 关键字参数(分组)
url(r'^new_edit/(?P<a1>\w+)/(?P<a2>\w+)', views.new_edit),
-- def new_edit(request,a1,a2):
#其中的a1位alex
c. 路由别名
d. 反向路由
e. 路由分发
f. 路由写法:开始符^, 终止符$, 伪静态.html
权限管理(根据url别名)
用户登录后显示用户权限的菜单(菜单是一个a连接,<a href={{根据别名转成的url}}></a>)
所以在数据库只要存储权限菜单url的别名即可
[oldboy-django][2深入django]django目录说明 + 路由系统的更多相关文章
- 【Django】基于Django架构网站代码的目录结构
经典的Django项目源码目录结构 Django在一个项目的目录结构划分方面缺乏必要的规范.在Django的官方文档中并没有给出大型项目的代码建议目录结构,网上的文章也是根据项目的不同结构也有适当的 ...
- Django 博客开发教程目录索引
Django 博客开发教程目录索引 本项目适合 0 基础的 Django 开发新人. 项目演示地址:Black & White,代码 GitHub 仓库地址:zmrenwu/django-bl ...
- Django之创建项目、目录层级、基本操作
创建项目 在合适的位置创建一个目录 打开cmd窗口,进入到创建的目录内 输入django-admin startproject project 目录层级 manage.py 是一个命令行工具,可以使我 ...
- 初学Django基础01 建立工程,目录结构,常用配置,上下文管理,模板渲染
django是python的web重量级框架,发展已经有10年多了,对应下面版本 Django 版本 Python 版本 1.8 2.7, 3.2 , 3.3, 3.4, 3.5 1.9, 1.10 ...
- django的下载安装,目录结构的介绍,简单的django应用
1.django的下载安装 pip3 install django==1.11.9 2.django的创建 1.在windows的cmd窗口下 1.1创建django项目 django-admin s ...
- django目录下的路由系统和视图函数
一.Django路由系统(url) 1.什么是路由系统 路由系统的本质是URL模式以及要为该URL模式调用的视图函数之间的一个映射表即不同的url路径对应的不同的函数,该路由系统是存放在全局配置文件u ...
- Django路由系统
django路由系统 简而言之,django的路由系统作用就是使views里面处理数据的函数与请求的url建立映射关系.使请求到来之后,根据urls.py里的关系条目,去查找到与请求对应的处理方法,从 ...
- Django URL (路由系统)
URL配置(URLconf)就像Django 所支撑网站的目录.它的本质是URL模式以及要为该URL模式调用的视图函数之间的映射表:你就是以这种方式告诉Django,对于这个URL调用这段代码,对于那 ...
- Django项目实践4 - Django站点管理(后台管理员)
http://blog.csdn.net/pipisorry/article/details/45079751 上篇:Django项目实践3 - Django模型 Introduction 对于某一类 ...
随机推荐
- 联动选择通过ajax获取选择对应的数据
网站有时候需要这种联动然后获取到想对应的数据 思路: 这种的话就是你每次选择哪一个就将这个设置一个标注 表示你现在选择的是哪一个 然后每选择一次就进行一次ajax查询,ajax里面有一个data里面添 ...
- C语言的一小步—————— 一些小项目及解析
——-------- 仅以此献给东半球第二优秀的C语言老师,黑锤李某鸽,希望总有那么一天我们的知识可以像他的丰臀一样渊博! bug跟蚊子的相似之处: 1.不知道藏在哪里. 2.不知道有多少. 3.总是 ...
- pta 编程题7 List Leaves
其它pta数据结构编程题请参见:pta 这次的编程作业要求从上到下,从左到右输出一棵树的叶子节点,即树的层序遍历,用队列的方式来实现. 注意enqueue和dequeue函数参数为Queue & ...
- arr.forEach()与for...in的用法举例
1.forEach() 将给定的数字转换成罗马数字. 所有返回的 罗马数字 都应该是大写形式. function convert(num) { var str = ""; var ...
- IBM MQ Explore使用
一,版本说明: 系统:win10.MQ:V9.04 二.关于帮助文档: 1.读了差不多一大半,个人感觉说明的比较生僻,应该是直译过来的.但是还是可以从这里面学一下基本的操作. 2.对于一些基本的操作, ...
- 统计学基于SPSS贾俊平 授课笔记 发布作业 spss19cn 软件下载地址及破解包spss19_10039 下载地址
spss19cn软件下载地址及破解包spss19_10039 软件包下载地址一 http://www.33lc.com/soft/41991.html 软件包下载地址二 http://dl.pconl ...
- ES6学习(二):函数的扩展
chapter07 函数的扩展 7.1 函数默认值 7.1.1 参数默认值简介 传统做法的弊端(||):如果传入的参数相等于(==)false的话,仍会被设为默认值,需要多加入一个if判断,比较麻烦. ...
- Linux Shell 几个特殊符号命令 & 、&& 、 ||
& 放在启动参数后面表示设置此进程为后台进程 默认情况下,进程是前台进程,这时就把Shell给占据了,我们无法进行其他操作,对于那些没有交互的进程,很多时候,我们希望将其在后台启动,可以在启动 ...
- BZOJ3679: 数字之积(数位dp)
题意 题目链接 Sol 推什么结论啊. 直接大力dp,$f[i][j]$表示第$i$位,乘积为$j$,第二维直接开map 能赢! /* */ #include<iostream> #inc ...
- 洛谷 P1346 电车
这道题的关键在建图 把每一个车站看成一个点,将这个车站相连的第一个车站建立一条边权为0的边,对于它所相连的其他车站,建立边权为1的边: 这样我们可以得到一张图: 起点,终点都知道了,跑一边最短路即可 ...