命名 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/">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' %}">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' %}">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/