Django—urls

path()用法

path(route,views,name = None,**kwags)
route:表示路径
views:表示路径匹配成功后调用的试图,必须是函数,如果是class必须使用as_views()转化为函数
name:表示viewes的别名
**kwags:表示一个字典

转换器的用法

https://news.163.com/19/0722/04/EKLOS9I90001899O.html
https://news.163.com/19/0722/04/EKLOKG2O0001899N.html
以上是网易新闻的链接,我们发现除了最后其他基本都一致

str:匹配一个非空字符串,除去‘/’,默认使用这种方式
int:匹配0或者正整数
slug:由ASCLL字母或者数字组成,通过‘-’链接的的字符串
uuid:uuid格式的字符串
path:匹配一个非空的字符串,包括‘/’,(区别str)

include函数的用法

第一种:
include(module,namespace = None)
第二种:
include(pattern_list)
第三种:
include((pattern_list,app_namespace),namespace = None)

module:表示一个模型文件
namespace:实例命名空间
pattern_list:必须是一个可迭代的path()或者re_path()清单
app_namespace:app命名空间

url重定向redirect

redirect(to,permanent=False,*args,**kwargs)
to:指的是你需要重新定向的位置,这个位置可以是一个视图,可以使一个url,可以是一个模块
permanent:默认值是False,它代表就是是否永久重定向

反向解析reverse

reverse(viewsanme,urlconf=None,args=None,kwargs=None,curent_app=None)

**主urls.py**
from django.contrib import admin
from django.urls import path,include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('book/',include('book.urls',namespace='book')),
    path('paper/',include('book.urls',namespace='paper'))

]

**app里的urls.py**
from django.contrib import admin
from django.urls import path,include
from . import views

# exectpatterns=[
# path('', views.Index),
# path('indec/', views.Index),
# path('page/', views.Index),
# ]
app_name='book'
urlpatterns = [
    # path('', views.Index),
    # path('web/', views.web),
    # path('index/<str:html>',views.html ),
    # path('page/<int:page>',views.page ),
    # path('page/<int:num1>/<int:num2>',views.sum ),
    # path('index/<slug:slugstr>',views.slugstr ),
    # path('index/<path:home>', views.home),
    # #inlcude用法
    # #1.path('index/',include(exectpatterns),name = "index")
    # #2.
    # path('index/',include((exectpatterns,'newsapp')),name = "index")

    #url别名用法
    # path('',views.index,name = "index"),
    # path('news/',views.news,name = "news"),
    # path('video/',views.video,name = "video"),

    #从url中获取查询关键字
    # path('',views.index,name = "index"),
    # path('search/',views.search,name = "search"),

    #url,重定向redirect
    # path('',views.index,name= "index"),
    #     # path('error/',views.error,name="lose"),

    #反向解析reverse
    path('',views.index,name= "index"),
    path('error/<int:a>/<int:b>',views.error,name="lose"),

]

**app里的views.py**
from django.shortcuts import render,redirect,reverse
from django.http import HttpResponse
from django.urls import resolve
# Create your views here.

#path和include案例
# def Index(request):
#     html = '<h1 style = "color:red">hello world</h1>'
#     return HttpResponse(html)
#
# def web(request):
#     html = '<h1 >django web</h1>'
#     return HttpResponse(html)
#
# def html(request,html):
#     return HttpResponse("<h1>{}</h1>".format(html))
#
# def page(request,page):
#     return HttpResponse("<h1>{}</h1>".format(page))
#
# def sum(request,num1,num2):
#     return HttpResponse("<h1>{}</h1>".format(num1+num2))
#
# def slugstr(request,slugstr):
#     return HttpResponse("<h1>{}</h1>".format(slugstr))
#
# def home(request,home):
#     return HttpResponse("<h1>{}</h1>".format(home))

#url别名的作用
# def index(request):
#     return render(request,'index.html')
#
# def news(request):
#     return HttpResponse("我是新闻页的首页画面")
#
# def video(request):
#     return HttpResponse("我是视频页的首页画面")


#从url中获取查询关键字
# def index(request):
#     wd = request.GET.get('wd')
#     return HttpResponse(wd)
# def index(request):
#     return render(request,'index.html')
#
# def search(request):
#     search = request.GET.get('wd')#这里的需要和html中的name一致
#     return HttpResponse(search)

##redirect用法
# def index(request):
#     username = request.GET.get('username')#要与写的一致,127.0.0.1:8000/?username=***
#     if username:
#         return HttpResponse("你是正确的")
#     else:
#         return redirect("lose")
#
# def error(request):
#     return HttpResponse("你找错啦")

##reverse用法
##命名空间用法
def index(request):
    username = request.GET.get('username')#要与写的一致,127.0.0.1:8000/?username=***
    if username:
        return HttpResponse("你是正确的")
    else:
        path = request.path
        namespace = resolve(path).namespace
        return redirect(reverse("{}:lose".format(namespace),kwargs={'a':100,'b':200}))

def error(request,a,b):
    return HttpResponse(request.path)
**templates里的index.html**
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>p{font-size:28px}</style>
</head>
<body>
<form action={% url 'search'%}>
    <input type="text" name="wd">
</form>
</body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值