3.0添加url和模块渲染方式

path 基本原则:
使用尖括号(<>)从url中捕获值。
包含一个转化器类型(converter type)
没有转化器,将匹配任何字符串,当然也包括了 / 字符。

 path('test//',views.test)
 
      当前面的url匹配成功后
      就会调用后面的视图函数

views.py文件:
def test(request,xx):
    return HttpResponse('test !%s'%xx)
urls.py文件:
path('test//',views.test)

默认的转换器:

str,匹配除了路径分隔符(/)之外的非空字符串,这是默认的形式
int,匹配正整数,包含0。
slug,匹配字母、数字以及横杠、下划线组成的字符串。
uuid,匹配格式化的uuid,如 075194d3-6885-417e-a8a8-6c931e272f00。
path,匹配任何非空字符串,包含了路径分隔符

分路由注册:
一个project有一个总的urls.py
各个app也可以自己建立自己的urls.py
用include()函数在project的urls.py文件进行注册

AV app 下的views.py:
    from django.shortcuts import render
    from django.http import HttpResponse

    # Create your views here.


    def AVviews(request):
      return HttpResponse('AV界面!')
      
AV app 下的urls.py: 
    from django.contrib import admin
    from django.urls import path

    from . import views


    urlpatterns = [
        path('admin/', admin.site.urls),
        path('avtest/',views.AVviews),
    ]
    
项目 urls.py:#进行分路由设置 必须添加 include
    from django.contrib import admin
    from django.urls import path,include

    from . import views

    urlpatterns = [
        path('admin/', admin.site.urls),
        path('av/',include('AV.urls')),
] #访问问题:会进行网址拼接 即主路由的地址拼接 app路由的地址
#ip/av/avtest/


传递参数
Kwargs为字典类型 可以传递额外的参数到views中
使用include的时候
需要统一给下面的url一些参数的时候
显得尤其有用

页面重定向:
在路由设置中可以设置各个路由的别名,利于后期的修改
name 参数:
name参数可以给这个url取一个合适的名字。通过给url取名字,以后在view或者模板中使用这个URL,就只需要通过这个名字就可以了。这样做的原因是防止url的规则更改,会导致其他地方用了这个url的地方都需要更改,但是如果取名字了,就不要做任何改动了。

path('avtest/',views.AVviews,name='old_name')
重定向 需要添加 reverse render redirect 这三个函数,添加到路由设置urls.py

redirect是重定向,reverse是将url的name解析成url本身的函数


app 中urls.py:
from django.contrib import admin
from django.urls import path
from . import views


urlpatterns = [
    path('admin/', admin.site.urls),
    path('avtest/',views.AVviews,name='old'),
    path('avtest2',views.AVviewsnew,name='new'),


]

app 中views.py:
from django.shortcuts import render,redirect,reverse
from django.http import HttpResponse

# Create your views here.


def AVviews(request):
    return redirect(reverse('new'))
    #return HttpResponse('AV界面!')

def AVviewsnew(request):
    return HttpResponse('AV转换后的新页面)


 访问原来的av/avtest/ 网址,会自动跳转到新的页面,页面发生重定向!

     
  



你可能感兴趣的:(3.0添加url和模块渲染方式)