Django命名URL和反向解析URL实现解析
2019-08-09 14:17
1486 查看
命名 URL:
test.html:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>测试页面</title> </head> <body> <p>测试页面</p> <form action="/test/" method="post"> <input type="text" name="username" value=""> <input type="submit" name="提交"> </form> <a href="/json_test/" rel="external nofollow" >json 数据</a> </body> </html>
urls.py:
from django.conf.urls import url from app01 import views urlpatterns = [ url(r'^test/', views.test), url(r'^json_test/', views.json_test), ]
如果 urls.py 中的 json_test/ 路径发生改变,test.html 中的地址也要改
可以使用反向 url 解析,给 json_test/ 起一个别名
urls.py:
from django.conf.urls import url from app01 import views urlpatterns = [ url(r'^test/', views.test), url(r'^json_test/', views.json_test, name="json"), # 给该 url 匹配命名为 json ]
test.html:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>测试页面</title> </head> <body> <p>测试页面</p> <form action="/test/" method="post"> <input type="text" name="username" value=""> <input type="submit" name="提交"> </form> <a href="{% url 'json' %}" rel="external nofollow" >json 数据</a> </body> </html>
这时候如果修改 urls.py 中的 json_test/ 路径,就不需要再去修改 test.html
反向解析 URL:
如果需要重定向这样的路径的话,可以在 views.py 中这样写:
from django.shortcuts import render, redirect from django.urls import reverse # json 测试 def json_test(request): hobby = ["Music", "Movie", "Basketball", "Reading"] from django.http import HttpResponse, JsonResponse return JsonResponse(hobby, safe=False) def test(request): return redirect(reverse("json")) # 通过 json 反向得到路径 json_test/
访问:http://127.0.0.1:8000/test/ 就变成访问:http://127.0.0.1:8000/json_test/
如果 url 需要传参数的话:
urls.py:
from django.conf.urls import url from app01 import views urlpatterns = [ url(r'^test/', views.test), url(r'^json_test/(?P<id>[0-9]{2,4})/(?P<title>[a-zA-Z]+)/', views.json_test, name="json"), ]
test.html:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>测试页面</title> </head> <body> <p>测试页面</p> <form action="/test/" method="post"> <input type="text" name="username" value=""> <input type="submit" name="提交"> </form> <a href="{% url 'json' 12 'abcd' %}" rel="external nofollow" >json 数据</a> </body> </html>
访问:http://127.0.0.1:8000/test/
点击 “json 数据”
反向解析需要参数的话:
urls.py:
from django.conf.urls import url, include from app01 import views urlpatterns = [ url(r'^test/', views.test), url(r'^json_test/(?P<id>[0-9]{2,4})/(?P<title>[a-zA-Z]+)/', views.json_test, name="json"), ]
views.py:
from django.shortcuts import HttpResponse, redirect from django.urls import reverse def json_test(request, id, title): print("id: ", id) print("title: ", title) return HttpResponse(id+"----"+title) def test(request): return redirect(reverse("json", kwargs={"id": 23, "title": "aaaa"}))
访问:http://127.0.0.1:8000/test/
跳转到了:http://127.0.0.1:8000/json_test/23/aaaa/
以上就是本文的全部内容,希望对大家的学习有所帮助
您可能感兴趣的文章:
相关文章推荐
- Django的路由系统|URL配置、正则表达式、分组命名、命名空间、命名URL反向解析
- Django url的命名空间 url反向解析
- django反向解析URL和URL命名空间的方法
- Django url反向解析 reverse()
- 外部文件操作django的models,url别名反向解析
- Python3之Django Web框架URL匹配、反向解析及部分错误处理
- Django url的反向解析
- Django url反向解析与路由分发名称空间
- Django的url反向解析
- 15、url反向解析和别名及命名空间
- Django-url反向解析与csrf-token设置
- Django框架实现逆向解析url的方法
- Django框架视图层URL映射与反向解析实例分析
- 在Django的URLconf中使用命名组的方法
- url_for()反向解析
- 前端攻城狮学习笔记三:实现一个URI解析方法,把url里#之后的参数解析成指定的数据结构。
- Django中url的逆向解析 -> Reverse resolution of URLs
- php中使用parse_url()对网址进行解析的实现代码(parse_url详解)
- LinuxDNS协议二、实现正向/反向解析、完全区域传送、增量区域传送
- [置顶] 【BigData】Jsoup+FusionCharts实现根据网页url解析网页数据,并用图表显示