Django动态路由实例
先说需求:
比如我前端有两个按钮,点击按钮1跳转到user1的用户信息页面,按钮2跳转user2用户信息页面,但是他俩共用同一个视图层
直接上代码
路由层
urlpatterns = [path('user/<str:username>/', views.user_home, name='user_home'),
]
<str:username>
:获取前端输入的内容,并传递给视图层
模板层
<button onclick="window.location.href='{% url 'Blog:user_home' username='user1' %}'">用户1信息</button>
<button onclick="window.location.href='{% url 'Blog:user_home' username='user2' %}'">用户2信息</button>
定义两个按钮作为跳转
视图层
def user_home(request, username):user_info = usernameprint(username)return render(request, 'adv2.html', locals())
user_info
:获取前端传递的username
参数,并用locals()
返回给adv2.html
页面
渲染
adv2.html
内容如下
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
我是{{ user_info }}
</body>
</html>
此时点击按钮1:
点击按钮2:
示例
实际应用中username的参数肯定也是不固定的,因此批量应用就需要用到for循环语法
前端按钮:
{% for adv in adv_list %}
<button onclick="window.location.href='{% url 'Blog:user_home' username=adv.id %}'">查看用户{{ adv.id }}信息</button>
{% endfor %}
从视图层传入adv_list的数据
def adv(request):adv_list = Adv.objects.all()return render(request, 'adv.html', locals())
user_home视图不变
def user_home(request, username):user_info = usernameprint(username)return render(request, 'adv2.html', locals())