zoukankan      html  css  js  c++  java
  • Django-路由(反向解析,名称空间)

     反向解析

    #没有正则表达式的url
    
    from django.contrib import admin
    from django.urls import path,re_path
    from app01 import views
    
    urlpatterns = [
        path('admin/', admin.site.urls),
    #定义一个路由,并且给路由起名为login
        path('login/',views.login,name='login')
    ]
    
    #在模板中使用,这样就可以反向解析出login的url,跟换url都不在需要重新写模板
    <form method="post" action="{% url 'login'%}">
    
        <input type="text" name="name">
        <input type="password" name="pwd">
        <input type="submit">
    </form>
    #有正则表达是的url
    
    
    from django.contrib import admin
    from django.urls import path,re_path
    from app01 import views
    
    urlpatterns = [
        path('admin/', admin.site.urls),
    #定义一个url,并起名为login
        re_path(r'^login/([0-9]{4})/$',views.login,name='login')
    ]
    
    
    #定义一个login 函数
    
    from django.shortcuts import render,HttpResponse
    #在python代码中反向解析url 需要导入reverse
    from django.urls import reverse
    
    
    def login(request):
        #在url中含有正则表达式时,我们需要自行传入参数,并且传入的参数必须符合正则表达式,元组形式,后面必须加逗号
        url =reverse('login',args=(2008,))
        print(url)
        if request.method =='GET':
            return render(request,'login.html',{'url':url})
        else:
            name =request.POST.get('name')
            pwd =request.POST.get('pwd')
            if name =='xxx' and pwd=='123':
                return HttpResponse('400')
            else:
                return  HttpResponse('404')

     名称空间的问题

    #url的名称空间
    #我们建立了app01 app02 两个应用
    
    # ------------------------app01路由--------------------
    
    from django.contrib import admin
    from django.urls import path,re_path
    from app01 import views
    
    urlpatterns = [
        path('admin/', admin.site.urls),
    #给index取名为 i    
        path('index/',views.index,name='i'),
    ]    
    
    
    # ------------------------app01视图--------------------
    from django.shortcuts import render,HttpResponse
    from django.urls import path,reverse
    def index(request):
        return  HttpResponse(reverse('i'))
    


    # ------------------------app02路由-------------------- from django.urls import path,include from app02 import views urlpatterns = [ #app02 index同样起名i path('index/',views.index,name='i') ] # ------------------------app02视图-------------------- from django.shortcuts import render,HttpResponse from django.urls import path,reverse # Create your views here. def index(request): return HttpResponse(reverse('i')) # ------------------------全局url-------------------- from django.contrib import admin from django.urls import path,include urlpatterns = [ path('admin/', admin.site.urls), path('app01/',include('app01.urls')), path('app02/',include('app02.urls')) ]

    我们分别访问 http://127.0.0.1:8000/app01/index/ 发现获取的反向地址都是相同的。

    修改:

    #首先修改全局,建立空间名称
    
    from django.contrib import admin
    from django.urls import path,include
    
    
    urlpatterns = [
        path('admin/', admin.site.urls),
    #建立app01,app02两个名称空间    
        path('app01/',include(('app01.urls','app01'))),
        path('app02/',include(('app02.urls','app02')))
    ]
    
    
    
    #之后在app01中应用
    from django.shortcuts import render,HttpResponse
    from django.urls import path,reverse
    def index(request):
        return  HttpResponse(reverse('app01:i'))
    
    #在app02中应用
    
    from django.shortcuts import render,HttpResponse
    from django.urls import path,reverse
    
    def index(request):
        return HttpResponse(reverse('app02:i'))

    这样修改之后,就可以正常解析出正确的地址

  • 相关阅读:
    php RSA加密传输代码示例
    数据库执行语句时,严重注意类型转换的问题
    数据库sql的in操作,解决in的过多
    php利用自定义key,对数据加解密的方法
    修改目录下所有文件的某段内容
    ajax返回json时,js获取类型,是字符串类型
    浅析单点登录,以及不同二级域名下的SSO实现
    samba服务,连接远程开发机
    『转』统计一个日志文件里,单词出现频率的shell脚本
    python的装饰器
  • 原文地址:https://www.cnblogs.com/wtil/p/9243139.html
Copyright © 2011-2022 走看看