标签:%s index short png 必须 方法 博客 nal info
Django路由就是URL映射,用户通过不同的URL地址,来获取信息,而这些信息是开发者针对每个不同URL处理后做出的响应。
Django的URL配置,配置文件:ROOT_URLCONF 它允许项目URL的入口。
收到URL请求,视图接收的参数:
下面命名存在了覆盖,不管正则匹配到的是什么,都将会使用kwargs中的n。
re_path(r‘(?P<n>\w+/$)‘,views.index,name=‘index‘,kwargs={‘n‘:‘kwargs_n‘})
函数接收,因为命名一致,使用一个n即可。
def index(request,n):
在新版的Django中,默认使用path。用法与之前的url有所不同,因为它有一些自己的匹配方式。
函数 path()
具有四个参数,两个必须参数:route
和 view
,两个可选参数:kwargs
和 name
。
route
是一个匹配 URL 的准则(类似正则表达式)。
当 Django 找到了一个匹配的准则,就会调用这个特定的视图函数,并传入一个 HttpRequest
对象作为第一个参数,被“捕获”的参数以关键字参数的形式传入。
任意个关键字参数可以作为一个字典传递给目标视图函数。
为你的 URL 取名能使你在 Django 的任意地方唯一地引用它,尤其是在模板中。这个有用的特性允许你只改一个文件就能全局地修改某个 URL 模式。
from django.urls import path from . import views urlpatterns = [ path(‘<int:year>/‘,views.index), path(‘<int:year>/<int:month>/‘,views.person_info) ]
第一个:2020/
第二个:2020/3/
无匹配:2020
<>
/
/
,因为默认情况下,每个url都带一个最前面的/
/
,如果你没有专门指定转换器,那么这个是默认使用的;如果你想使用正则表达式,你可以使用re_path。它其实是兼容老板中的url。
re_path的参数与path的参数完全一致,只是规则按照正则。它们都被放在了django.urls中。
from django.urls import path,re_path from . import views urlpatterns = [ path(‘<int:year>/‘,views.index), re_path(r‘^(?P<year>\d{4})/(?P<month>\d{1,2})/$‘,views.person_info) ]
path()
方法中可以指定转换成某种类型。在视图中接收参数时一定要小心。在Python 正则表达式中,命名正则表达式组的语法是(?P<name>pattern),其中name 是组的名称,pattern 是要匹配的模式。
我们上面其实已经用的过了,再将上面的例子拿下里应用。
from django.urls import path,re_path from . import views urlpatterns = [ path(‘<int:year>/‘,views.index), re_path(r‘^(?P<year>\d{4})/(?P<month>\d{1,2})/$‘,views.person_info) ]
<int:year> 其中year是一组命名。
视图接收
def index(request,year):
有两个有命名的组:year month。
视图接收
def person_info(request,year,month):
我们一般会在APP中创建一个urls.py,把APP中的路由放在里面,而不是放在根urls.py中,因为这样显得额外清晰。
允许引用其它 URLconfs。很快我们就会用到它。
arg
:URLconf的名。
url地址:
127.0.0.1/index/introduce
127.0.0.1/index/music
127.0.0.1/index/movie
from django.urls import path,re_path from . import views urlpatterns = [ re_path(r‘^index/introduce/$‘,views.introduce), re_path(r‘^index/music/$‘,views.music), re_path(r‘^index/movie/$‘,views.movie), ]
如果现在要将index改为home咋办?一个一个修改吗?好像有点牵强吧。
app/urls.py
from django.urls import path,re_path from . import views urlpatterns = [ re_path(r‘introduce/$‘,views.introduce), re_path(r‘music/$‘,views.music), re_path(r‘movie/$‘,views.movie), ]
根/ursl.py
from django.contrib import admin from django.urls import path,include urlpatterns = [ path(‘admin/‘, admin.site.urls), path(‘index/‘, include(‘My_app.urls‘)) ]
在使用Django 项目时,一个常见的需求是获得URL 的最终形式,以用于嵌入到生成的内容中(视图中和显示给用户的URL等)或者用于处理服务器端的导航(重定向等)。
{% url ‘名‘ %}
{% url ‘名‘ ‘参数值1‘ ‘参数值2‘ %}
from django.urls import path,re_path from . import views urlpatterns = [ path(‘index/<str:name>/‘,views.index), path(‘person_info/<str:name>/‘,views.person_info,name=‘person_info‘) ]
from django.shortcuts import render,HttpResponse,reverse,redirect # Create your views here. def index(request,name): return render(request,‘index.html‘,{‘name‘:name}) def person_info(request,name): return HttpResponse(‘%s的个人博客‘%name)
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Index</title> </head> <body> <ul> <li>姓名:{{ name }}</li> <li>个人博客:<a href="{% url ‘person_info‘ name%}">{{ name }}</a></li> </ul> </body> </html>
访问:127.0.0.1/index/Kidd
点击,个人博客
语法
reverse(‘名‘,args=(,))
from django.urls import path,re_path from . import views urlpatterns = [ path(‘<int:year>/‘,views.year,name=‘year‘), re_path(r‘^(?P<year>\d{4})/(?P<month>\d{1,2})/$‘,views.year_month,name=‘year_month‘) ]
from django.shortcuts import render,HttpResponse,reverse,redirect # Create your views here. def year(request,year): return redirect(reverse(‘year_month‘,args=(year,3))) def year_month(request,year,month): return HttpResponse(‘year:%s,month:%s‘%(year,month))
输入:127.0.0.1/2020/
自动跳转
127.0.0.1/2020/3/
标签:%s index short png 必须 方法 博客 nal info
原文地址:https://www.cnblogs.com/py-peng/p/12591039.html