url反向解析

url.py

  1. from django.conf.urls import url
  2. from django.contrib import admin
  3. from app01 import views
  4. urlpatterns = [
  5. url(r'^admin/', admin.site.urls),
  6. url(r'^loginxxx/', views.login,name='login'),
  7. url(r'^indexxx/', views.index, name='index'),
  8. ]

视图views.py

  1. from django.shortcuts import render, HttpResponse, redirect
  2. from django.core.urlresolvers import reverse
  3.  
  4. def login(request):
  5. if request.method == 'POST':
  6. if 1:
  7. return redirect(reverse('index'))
  8. return render(request, 'login.html')
  9.  
  10. def index(request):
  11. return HttpResponse('this is index')

模板 templates/login.html

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Title</title>
  6. </head>
  7. <body>
  8.  
  9. <form action="{% url 'login' %}" method="post">
  10. {% csrf_token %}
  11. <input type="text" name="user" placeholder="username">
  12. <input type="password" name="pwd" placeholder="password">
  13. <input type="submit" value="提交">
  14. </form>
  15. </body>
  16. </html>

总结:

模板中:

  1. url(r'^loginxxx/', views.login,name='login'),
  2. ...
  3. <form action="{% url 'login' %}" method="post"> <!-- 解析成loginxxx/ -->
  4. ...
  5. </form>

  

视图中:

  1. url(r'^indexxx/', views.index, name='index'),
  2. ...
  3. from django.shortcuts import render, HttpResponse, redirect
  4. from django.core.urlresolvers import reverse
  5.  
  6. def login(request):
  7. if request.method == 'POST':
  8. if 1:
  9. return redirect(reverse('index')) # 解析成 indexxx/
  10. return render(request, 'login.html')

  

路由分发

项目下的urls.py

  1. from django.conf.urls import url,include
  2. urlpatterns = [
  3. url(r'^app01/', include('app01.urls')),
  4. url(r'^app02/', include('app02.urls')),
  5.  
  6. ]

app01.urls.py

  1. from django.conf.urls import url
  2. from app01 import views
  3.  
  4. urlpatterns = [
  5. url(r'^index/', views.index, name='index'),
  6.  
  7. ]

app02.urls.py 

  1. from django.conf.urls import url
  2. from app02 import views
  3.  
  4. urlpatterns = [
  5. url(r'^index/', views.index, name='index'),
  6.  
  7. ]

views:(app01跟app02的一样)

  1. from django.shortcuts import HttpResponse
  2. from django.core.urlresolvers import reverse
  3.  
  4. def index(request):
  5. return HttpResponse(reverse('index'))

这样,问题来了当我们访问http://127.0.0.1:8000/app01/index/的时候,期待的结果是/app01/index/ 但是url反向解析的结果却是/app02/index/

解决办法:名称空间

名称空间

  1. 项目下urls.py
  2. from django.conf.urls import url,include
  3. urlpatterns = [
  4. url(r'^app01/', include('app01.urls',namespace='app01')),
  5. url(r'^app02/', include('app02.urls',namespace='app02')),
  6.  
  7. ]
  8.  
  9. app01.urls.py
  10. from django.conf.urls import url
  11. from app01 import views
  12.  
  13. urlpatterns = [
  14. url(r'^index/', views.index, name='index'),
  15.  
  16. ]
  17.  
  18. app02.urls.py
  19. from django.conf.urls import url
  20. from app02 import views
  21.  
  22. urlpatterns = [
  23. url(r'^index/', views.index, name='index'),
  24.  
  25. ]
  26.  
  27. app01.views.py
  28. from django.shortcuts import HttpResponse
  29. from django.core.urlresolvers import reverse
  30.  
  31. def index(request):
  32. return HttpResponse(reverse('app01:index'))
  33.  
  34. app02.views.py
  35. from django.shortcuts import HttpResponse
  36. from django.core.urlresolvers import reverse
  37.  
  38. def index(request):
  39. return HttpResponse(reverse('app02:index'))

  

Django url反向解析与路由分发名称空间的更多相关文章

  1. [Django框架之路由层匹配、有名 无名分组、反向解析、路由分发、名称空间、伪静态、本地虚拟环境、django版本区别]

    [Django框架之路由层匹配.有名 无名分组.反向解析.路由分发.名称空间.伪静态.本地虚拟环境.django版本区别] 路由层 路由即请求地址与视图函数的映射关系,如果把网站比喻成一本书,那路由就 ...

  2. Web框架之Django_03 路由层了解(路有层 无名分组、有名分组、反向解析、路由分发 视图层 JsonResponse,FBV、CBV、文件上传)

    摘要: 路由层 无名分组 有名分组 反向解析 路由分发 名称空间 伪静态网页.虚拟环境 视图层 JsonResponse FBV 与 CBV(function base views与class bas ...

  3. django路由匹配、反向解析、无名有名反向解析、路由分发、名称空间

    目录 django请求生命周期流程图 1.Django请求的生命周期的含义 2.Django请求的生命周期图解及流程 3.Django的请求生命周期(分布解析) 路由层 1.路由匹配 2.path转换 ...

  4. Django框架路由分发-名称空间

    目录 一:路由分发 1.路由分发简介 2.总路由分发配置 3.总路由终极配置(不需要导应用路由,直接点应用即可) 4.子路由配置 二:名称空间 1.名称空间应用场景 3.解决方式二>>&g ...

  5. Django框架(四)-- 路由控制:有名/无名分组、反向解析、路由分发、名称空间、伪静态、APPEND_SLASH、不同版本的Django区别、Django虚拟环境搭建

    路由控制 一.简单路由配置 url(r'^booklist$', views.booklist) 第一个参数是正则表达式,第二个参数是视图函数 每个正则表达式前面的'r' 是可选的但是建议加上.它告诉 ...

  6. Django框架之第三篇(路由层)--有名/无名分组、反向解析、路由分发、名称空间、伪静态

    一.Django请求生命周期 二.路由层  urls.py url()方法 第一个参数其实就是一个正则表达式,一旦前面的正则匹配到了内容,就不会再往下继续匹配,而是直接执行对应的视图函数. djang ...

  7. Django框架(四)—— 路由控制:有名/无名分组、反向解析、路由分发、名称空间、伪静态、APPEND_SLASH、不同版本的Django区别

    目录 路由控制 一.简单路由配置 二.无名分组 三.有名分组 四.反向解析 五.路由分发 六.名称空间(一般不使用) 七.伪静态 八.Django 2.x和Django 1.x 路由层区别 九.APP ...

  8. python 之 Django框架(路由系统、include、命名URL和URL反向解析、命名空间模式)

    12.36 Django的路由系统 基本格式: from django.conf.urls import url urlpatterns = [ url(正则表达式, views视图函数,参数,别名) ...

  9. Django路由系统-URL命名&URL反向解析

    命名URL和URL反向解析 前言 起始样式,HTML中的href是写死的,不能更改,如下示例代码: # urls中 urlpatterns = [ url(r'^admin/', admin.site ...

随机推荐

  1. en_java去重排序

    @Test public void tes5() { String[] strs ={"e", "ee", "ea", "ei&q ...

  2. 最新版本Firefox表单css兼容性

    场景描述: 为了在各浏览器上传控件保持统一的风格,用隐藏“浏览控件”的方式,在最新版本的Firefox下隐藏的“浏览”按钮漂移了. 问题分析: HTML代码: <form class=" ...

  3. 太过亲密往往不好——用non-member,non-friend替换member函数

    在前一篇文章,我们提到,使用private来代替public以提高class的封装性.这一篇文章,我们将对接口发起攻势.首先来个简单的例子. class WebBrowser { public: vo ...

  4. hdu2665

    题解: 裸的主席树,记录最小值 代码: #include<cstdio> #include<cmath> #include<algorithm> #include& ...

  5. maven install deploy

    1.安装到本地仓库 install jar to local fs mvn .jar -DgroupId=com.bonc -DartifactId=licenseVerify-.jar -Dvers ...

  6. DevExpress v17.2新版亮点—ASP.NET篇(三)

    用户界面套包DevExpress v17.2终于正式发布,本站将以连载的形式为大家介绍各版本新增内容.本文将介绍了DevExpress ASP.NET v17.2 的GridView Control. ...

  7. BitDefender(比特梵德)特惠活动 免费获取9个月激活码

    Bitdefender为了庆祝自己获得2014年最佳杀毒软件,送出9个月的Internet security免费激活码.

  8. 清除 eclipse svn 账号密码

    进入目录 C:\Documents and Settings\administrator\Application Data\Subversion\auth 删除目录下所有文件,然后重新刷新svn地址就 ...

  9. utf-8和Unicode的区别

    链接 utf-8和Unicode到底有什么区别?是存储方式不同?编码方式不同?它们看起来似乎很相似,但是实际上他们并不是同一个层次的概念 要想先讲清楚他们的区别,首先应该讲讲Unicode的来由. 众 ...

  10. C#实现Access导入导出Excel

    一.Access从Excel中导入数据 .用到的Excel表的格式及内容 实现 [c-sharp] view plaincopyprint? OleDbConnection con = new Ole ...