Django url反向解析与路由分发名称空间
url反向解析
url.py
from django.conf.urls import url
from django.contrib import admin
from app01 import views
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^loginxxx/', views.login,name='login'),
url(r'^indexxx/', views.index, name='index'),
]
视图views.py
from django.shortcuts import render, HttpResponse, redirect
from django.core.urlresolvers import reverse
def login(request):
if request.method == 'POST':
if 1:
return redirect(reverse('index'))
return render(request, 'login.html')
def index(request):
return HttpResponse('this is index')
模板 templates/login.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="{% url 'login' %}" method="post">
{% csrf_token %}
<input type="text" name="user" placeholder="username">
<input type="password" name="pwd" placeholder="password">
<input type="submit" value="提交">
</form>
</body>
</html>
总结:
模板中:
url(r'^loginxxx/', views.login,name='login'),
...
<form action="{% url 'login' %}" method="post"> <!-- 解析成loginxxx/ -->
...
</form>
视图中:
url(r'^indexxx/', views.index, name='index'),
...
from django.shortcuts import render, HttpResponse, redirect
from django.core.urlresolvers import reverse
def login(request):
if request.method == 'POST':
if 1:
return redirect(reverse('index')) # 解析成 indexxx/
return render(request, 'login.html')
路由分发
项目下的urls.py
from django.conf.urls import url,include
urlpatterns = [
url(r'^app01/', include('app01.urls')),
url(r'^app02/', include('app02.urls')),
]
app01.urls.py
from django.conf.urls import url
from app01 import views
urlpatterns = [
url(r'^index/', views.index, name='index'),
]
app02.urls.py
from django.conf.urls import url
from app02 import views
urlpatterns = [
url(r'^index/', views.index, name='index'),
]
views:(app01跟app02的一样)
from django.shortcuts import HttpResponse
from django.core.urlresolvers import reverse
def index(request):
return HttpResponse(reverse('index'))
这样,问题来了当我们访问http://127.0.0.1:8000/app01/index/的时候,期待的结果是/app01/index/ 但是url反向解析的结果却是/app02/index/
解决办法:名称空间
名称空间
项目下urls.py
from django.conf.urls import url,include
urlpatterns = [
url(r'^app01/', include('app01.urls',namespace='app01')),
url(r'^app02/', include('app02.urls',namespace='app02')),
]
app01.urls.py
from django.conf.urls import url
from app01 import views
urlpatterns = [
url(r'^index/', views.index, name='index'),
]
app02.urls.py
from django.conf.urls import url
from app02 import views
urlpatterns = [
url(r'^index/', views.index, name='index'),
]
app01.views.py
from django.shortcuts import HttpResponse
from django.core.urlresolvers import reverse
def index(request):
return HttpResponse(reverse('app01:index'))
app02.views.py
from django.shortcuts import HttpResponse
from django.core.urlresolvers import reverse
def index(request):
return HttpResponse(reverse('app02:index'))
Django url反向解析与路由分发名称空间的更多相关文章
- [Django框架之路由层匹配、有名 无名分组、反向解析、路由分发、名称空间、伪静态、本地虚拟环境、django版本区别]
[Django框架之路由层匹配.有名 无名分组.反向解析.路由分发.名称空间.伪静态.本地虚拟环境.django版本区别] 路由层 路由即请求地址与视图函数的映射关系,如果把网站比喻成一本书,那路由就 ...
- Web框架之Django_03 路由层了解(路有层 无名分组、有名分组、反向解析、路由分发 视图层 JsonResponse,FBV、CBV、文件上传)
摘要: 路由层 无名分组 有名分组 反向解析 路由分发 名称空间 伪静态网页.虚拟环境 视图层 JsonResponse FBV 与 CBV(function base views与class bas ...
- django路由匹配、反向解析、无名有名反向解析、路由分发、名称空间
目录 django请求生命周期流程图 1.Django请求的生命周期的含义 2.Django请求的生命周期图解及流程 3.Django的请求生命周期(分布解析) 路由层 1.路由匹配 2.path转换 ...
- Django框架路由分发-名称空间
目录 一:路由分发 1.路由分发简介 2.总路由分发配置 3.总路由终极配置(不需要导应用路由,直接点应用即可) 4.子路由配置 二:名称空间 1.名称空间应用场景 3.解决方式二>>&g ...
- Django框架(四)-- 路由控制:有名/无名分组、反向解析、路由分发、名称空间、伪静态、APPEND_SLASH、不同版本的Django区别、Django虚拟环境搭建
路由控制 一.简单路由配置 url(r'^booklist$', views.booklist) 第一个参数是正则表达式,第二个参数是视图函数 每个正则表达式前面的'r' 是可选的但是建议加上.它告诉 ...
- Django框架之第三篇(路由层)--有名/无名分组、反向解析、路由分发、名称空间、伪静态
一.Django请求生命周期 二.路由层 urls.py url()方法 第一个参数其实就是一个正则表达式,一旦前面的正则匹配到了内容,就不会再往下继续匹配,而是直接执行对应的视图函数. djang ...
- Django框架(四)—— 路由控制:有名/无名分组、反向解析、路由分发、名称空间、伪静态、APPEND_SLASH、不同版本的Django区别
目录 路由控制 一.简单路由配置 二.无名分组 三.有名分组 四.反向解析 五.路由分发 六.名称空间(一般不使用) 七.伪静态 八.Django 2.x和Django 1.x 路由层区别 九.APP ...
- python 之 Django框架(路由系统、include、命名URL和URL反向解析、命名空间模式)
12.36 Django的路由系统 基本格式: from django.conf.urls import url urlpatterns = [ url(正则表达式, views视图函数,参数,别名) ...
- Django路由系统-URL命名&URL反向解析
命名URL和URL反向解析 前言 起始样式,HTML中的href是写死的,不能更改,如下示例代码: # urls中 urlpatterns = [ url(r'^admin/', admin.site ...
随机推荐
- learning shell built-in variables (1)
Shell built-in variables [Purpose] Learning shell built-in variables, example $0,$1,$2,$3,$#, ...
- asp.net文件压缩,下载,物理路径,相对路径,删除文件
知识动手实践一次,就可以变成自己的了.不然一直是老师的,书本的. 这几天做了一个小小的项目,需要用到文件下载功能,期初想到只是单个的文件,后面想到如果很多文件怎么办?于是又想到文件压缩.几经波折实践, ...
- Solr安装入门
Solr安装入门:http://www.importnew.com/12607.html 查询详解:http://www.360doc.com/content/14/0306/18/203871_35 ...
- 关于apicloud ios自定义模块引用第三方framework not found for architecture armv7
1 .自定义模块 新建模块必须是静态库 2.使用的第三方framework 必须要把 .h文件开放出来 3.编译要用 真机模式 (上传模块以后,自定义load要编译,用生成的二维码调试) 4. 添加监 ...
- VS2013中的快捷键大全
Visual Studio 2013 是一个基本完整的开发工具集,它包括了整个软件生命周期中所需要的大部分工具,如UML工具.代码管控工具.集成开发环境(IDE)等等.VS 2013 中新增了很多提高 ...
- Tomcat服务器启动失败:Could not publish server configuration for Tomcat v8.0 Server at localhost. Multiple Contexts have a path of
在eclipse中使用Tomcat8.0时,出现了如下错误: 解决办法: 在建立Tomcat服务时,eclipse会自动生成一个Servers的项目. 在这个项目中,找到你部署项目的服务文件夹. 在这 ...
- 如何完全卸载 mysql 数据库
有时候MySQL不能完全卸载,这时候必须通过一些途径删除掉注册表和一些残余的文件,然后才能重新安装才可以成功! 1.控制面板——>所有控制面板项——>程序和功能,卸载mysql serve ...
- 缓存ehcache
应用场景: 当调用一个接口数据时:直连-缓存-数据库-远程调用(类似直连) 代码: // 从缓存 通过身份证号码查询是否存在征信报告 CisReportRoot fromCache = cacheSe ...
- HDU 1518 Square(DFS)
Problem Description Given a set of sticks of various lengths, is it possible to join them end-to-end ...
- Ubuntu16.04 和 hadoop2.7.3环境下 hive2.1.1安装部署
参考文献: http://blog.csdn.NET/reesun/article/details/8556078 http://blog.csdn.Net/zhongguozhichuang/art ...