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>