[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 对于某一类 ...
随机推荐
- Python对Excel操作详解
Python对Excel操作详解 文档摘要: 本文档主要介绍如何通过python对office excel进行读写操作,使用了xlrd.xlwt和xlutils模块.另外还演示了如何通过Tcl ...
- LeetCode Remove Duplicates from Sorted Array删除整型数组中的重复元素并返回剩下元素个数
class Solution { public: int removeDuplicates(int A[], int n) { ],*e=&A[]; //s指向开头第一个,e往后遍历相同的 i ...
- php生成纯数字、字母数字、图片、纯汉字的随机数验证码
现在讲开始通过PHP生成各种验证码旅途,新手要开车了,请刷卡! 首先,我们开始先生成一个放验证码的背景图片 注:没有Imagejpg()这个函数,只有imagepng()函数 imagecreatet ...
- IDA逆向:数组的逆向
阅读<IDA Pro权威指南>第八章,整理的一些笔记,作为逆向的基础,可能有很多认识不足. //全局分配数组 *************************************** ...
- hdu-2066 一个人的旅行---模板题
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2066 题目大意: 求到目标点集合中的最短距离 解题思路: dijkstra算法求出每个点到该点的最短 ...
- 【BZOJ1088】[SCOI2005] 扫雷Mine(分类讨论)
点此看题面 大致题意: 给你一个\(2*n\)的扫雷棋盘,现让你根据第二列的信息确定第一列有多少种摆法. 扫雷性质 听说这是一道动态规划+数学题. 其实,根据扫雷游戏的某个性质,只要确定了第一个格子是 ...
- 同余问题(一)——扩展欧几里得exgcd
前言 扩展欧几里得算法是一个很好的解决同余问题的算法,非常实用. 欧几里得算法 简介 欧几里得算法,又称辗转相除法. 主要用途 求最大公因数\(gcd\). 公式 \(gcd(a,b)=gcd(b,a ...
- hive对有null值的列进行avg,sum,count等操作时会不会过滤null值
在hive中,我们经常会遇到对某列进行count.sum.avg等操作计算记录数.求和.求平均值等,但这列经常会出现有null值的情况,那这些操作会不会过滤掉null能呢? 下面我们简单测试下: wi ...
- 【转】iOS开发之压缩与解压文件
ziparchive是基于开源代码”MiniZip”的zip压缩与解压的Objective-C 的Class,使用起来非常的简单方法:从http://code.google.com/p/ziparch ...
- SQL Server中Table字典数据的查询SQL示例代码
SQL Server中Table字典数据的查询SQL示例代码 前言 在数据库系统原理与设计(第3版)教科书中这样写道: 数据库包含4类数据: 1.用户数据 2.元数据 3.索引 4.应用元数据 其中, ...