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反向解析与路由分发名称空间的更多相关文章

  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. 主席树模板(poj 2104&&poj2761)

    主席树,就是n个线段树,用nlonn的空间实现 首先建立第一个线段树 把要查询的值离散化,建立值的线段树 每一次加入一个点 显然每一次只会修改logn个点 把其他的点直接建边连接即可 代码: #inc ...

  2. swig的语法和用法

    1.swig一般在js文件里引入方法: __inline(*.tpl),如下图所示 2.特殊用法 swig模板里套用swig模板,<link rel="import" hre ...

  3. oracle不小心更新了数据库中的所有内容后的恢复

    开发过程中,在更新数据库中的某一条数据时,由于疏忽忘记加where判断条件了,这时更新会提示是否要更新全部数据,但是由于自己没有仔细看提示导致直接点确定并commit了,导致数据库中所有数据的相关字段 ...

  4. spring事务管理及相关知识

    最近在项目中遇到了spring事务的注解及相关知识,突然间感觉自己对于这部分知识只停留在表面的理解层次上,于是乎花些时间上网搜索了一些文章,以及对于源码的解读,整理如下: 一.既然谈到事务,那就先搞清 ...

  5. GSM中时隙、信道、突发序列、帧的解释

    刚从论坛中看到有人问GSM中时隙.信道.突发序列.帧知识.今天我们数字通信正好上到这一块,我就根据我知道的和网上搜索的回答! 1.时分多路复用技术 FDMA:频分多址 TDMA:时分多址 CDMA:码 ...

  6. Femtocell家庭基站通信截获、伪造任意短信漏洞

    阿里移动安全团队与中国泰尔实验室无线技术部的通信专家们一起,联合对国内运营商某型Femtocell基站进行了安全分析,发现多枚重大漏洞,可导致用户的短信.通话.数据流量被窃听.恶意攻击者可以在免费申领 ...

  7. 等比例缩放图片(C#)

    private Bitmap ZoomImage(Bitmap bitmap, int destHeight, int destWidth) { try { System.Drawing.Image  ...

  8. C#中.XSD是什么文件?

    xml的Schema文件 如果把xml看做数据库的数据,那么Schema文件就相当于数据库,表的结构(比如有哪些字段,约束等等)

  9. 1.1.4 A+B for Input-Output Practice (V)

    A+B for Input-Output Practice (V) Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K ...

  10. nib must contain exactly one top level object which must be a UICollectionReusableView instance

    多了一个