DTL中的url反向解析
反向解析: 根据配置的url来动态生成链接地址
语法: { % url ‘namespace:name’ p1 p2 %}
好处: 如果改变了url配置不需要再去改每一个链接地址
反向解析举例
1.注册应用(settings.py)
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'app_name'
)
1.配置主url(project_name/urls.py project_name为项目文件夹)
from django.conf.urls import include, url
from django.contrib import admin
urlpatterns = [
url(r'^admin/', include(admin.site.urls)),
url(r'^', include('app_name.urls', namespace='app_name'))
]
/*
app_name:创建的应用名,为项目下的应用文件夹
app_name.urls:应用的urls,应用文件夹下的urls.py
*/
2.配置应用url(app_anme/urls.py)
from django.conf.urls import url
import views
urlpatterns = [
url(r'^$', views.index, name='index'),
url(r'^(\d+)/(\d+)$', views.show, name='show'),
]
3.定义视图(app_name/views.py)
app_name/index.html处于project_name/templates/app_name/
from django.shortcuts import render
from models import *
def index(request):
context = {}
return render(request, 'app_name/index.html', context)
def show(request, id1, id2):
context = {'id1': id1, 'id2': id2}
return render(request, 'app_name/show.html', context)
4.定义模板
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<a href="{% url 'app_name:show' '123' '456' %}">显示</a>
<hr>
</body>
</html>
show.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
{{id1}}
{{id2}}
</body>
</html>
5.配置模板路径DIRS(settings.py)
模板文件夹templates在project_name文件夹下
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'templates')],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
6.运行服务器,在浏览器地址栏输入 localhost:8000/123/456,请求服务器。