django反向解析

反向解析

一:普通路径

在 urls.py 中给路由起别名,name="路由别名"

path("login1/", views.login, name="login")

 

 在 views.py 中,从 django.urls 中引入 reverse,利用 reverse("路由别名") 反向解析:

return redirect(reverse("login"))

 

 在模板 templates 中的 HTML 文件中,利用 {% url "路由别名" %} 反向解析。

<form action="{% url 'login' %}" method="post"> 

 二:正则路径(无名分组)

 在 urls.py 中给路由起别名,name="路由别名"

re_path(r"^login/([0-9]{2})/$", views.login, name="login")

 

 在 views.py 中,从 django.urls 中引入 reverse,利用 reverse("路由别名",args=(符合正则匹配的参数,)) 反向解析。

return redirect(reverse("login",args=(10,)))

 

 在模板 templates 中的 HTML 文件中利用 {% url "路由别名" 符合正则匹配的参数 %} 反向解析。

<form action="{% url 'login' 10 %}" method="post">

 

 

三:正则路径(有名分组)

在 urls.py 中给路由起别名,name="路由别名"
re_path(r"^login/(?P<year>[0-9]{4})/$", views.login, name="login")

 

 在 views.py 中,从 django.urls 中引入 reverse,利用 reverse("路由别名",kwargs={"分组名":符合正则匹配的参数}) 反向解析。

return redirect(reverse("login",kwargs={"year":3333}))

 

 在模板 templates 中的 HTML 文件中,利用 {% url "路由别名" 分组名=符合正则匹配的参数 %} 反向解析。

<form action="{% url 'login' year=3333 %}" method="post">

 

 参考: Django 路由 | 菜鸟教程 (runoob.com)

Example:  

urls.py

from django.contrib import admin
from django.urls import path
from . import views
urlpatterns = [
    path('admin/', admin.site.urls),
    path('mainroute/<str:id>/', views.mainr,name="namespacemainroute"),
]

wiews.py

复制代码
from django.shortcuts import render,HttpResponse,reverse

# Create your views here.

def mainr(request,id):

    name="pfer"
    age=18
    print ("locals",locals())
    print ("Reverse url",reverse("namespacemainroute",kwargs={'id':id}))
    print ("Reverse url", reverse("namespacemainroute", args=(id,)))
    print ("get id",id)
    return render(request,"mainr.html",{"locals":locals()})
复制代码

mainr.html

复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <h1>This is  {{ locals }}</h1>
<h1>This is  {{ locals.name }}</h1>
<h1>This is  {{ locals.age }}</h1>
    <h1>This is id {{ locals.id }}</h1>

    <a href="{% url 'namespacemainroute' locals.id %}?province=shanxi">link</a>
</body>
复制代码

 

posted @   腹肌猿  阅读(247)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 全面指南,95% 的人都不知道的9个技巧(建议收藏)
· 自定义Ollama安装路径
· 本地部署DeepSeek
· 快速入门 DeepSeek-R1 大模型
· DeepSeekV3+Roo Code,智能编码好助手
点击右上角即可分享
微信分享提示