路由系统
1.单一路由对应
seo 搜索引擎的录入权重
<ul>
{% for item in user_list %}
<li>{{ item }}|<a href="/edit/?nid={{ item }}">编辑</a></li>
{% endfor %}
</ul>
urlpatterns = [
url(r'^index$', views.index),
]
/?id=XXXX/ 这样get传值,seo优先级不高
- 2.基于正则的路由
<ul>
{% for item in user_list %}
<li>{{ item }}|<a href="/edit/{{ item }}">编辑</a></li>
{% endfor %}
</ul>
<ul>
{% for item in user_list %}
<li>{{ item }}|<a href="/edit/{{ item }}.html">编辑</a></li>
{% endfor %}
</ul>
urlpatterns = [
url(r'^edit/(\w+)/', views.edit),
url(r'^edit/(\w+).html$', views.edit),
# 伪静态 seo 权重更高
# $ 终止符 如果遇到浏览器自动在末尾加/,清除缓存后解决。
]
def edit(request,a1):
return HttpResponse(a1)
- 3.带参数的路由
<ul>
{% for item in user_list %}
<li>{{ item }}|<a href="/edit/{{ item }}/33/">编辑</a></li>
{% endfor %}
</ul>
urlpatterns = [
url(r'^edit/(?P<a1>\w+)/(?P<a2>\w+)/', views.edit),
]
def edit(request,a1,a2):
return HttpResponse(json.dumps((a1,a2)))
- 4.路由分发
# urls.py
urlpatterns = [
url(r'^app01/', include('app01.urls')),
]
# app01.urls.py
urlpatterns = [
url(r'^index$', views.index),
]
- 5.设置默认页面
def default(request):
return HttpResponse('not find!')
urlpatterns = [
url(r'^',default),# 放在最后
]
- 6.为路由映射设置别名
def index(request):
user_list = [
'spring',
'summer',
'autumn',
'winter',
]
v = reverse('n1')
print(v)
return render(request,'index.html',{'user_list':user_list})
urlpatterns = [
url(r'^index/', views.index,name='n1'),
]
<body>
<form method='POST' action="{%url 'n1'%}"
...
</body>
def edit(request,a1):
v = reverse('n2',args=(1,))
print(v)
return HttpResponse(json.dumps(a1))
urlpatterns = [
url(r'^edit/(\w+)', views.edit,name='n2'),
]
<body>
<form method='POST' action="{% url 'n1' i %}" #传值
...
</body>
def edit(request,a1,a2):
v = reverse('n2',kwargs={'a1':222,'a2':333})
print(v)
return HttpResponse(json.dumps((a1,a2)))
urlpatterns = [
url(r'^edit/(?P<a1>\w+)/(?P<a2>\w+)/',
views.edit,name='n2'),
]