url反向解析小例子

本文详细解析了Django框架中URL配置的方式,包括如何使用路径和正则表达式进行URL匹配,以及如何通过命名空间和名称来实现URL的反向解析。同时,深入探讨了视图函数的调用流程,从URL匹配到视图函数执行的全过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

test4/urls.py

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('booktest.urls', namespace='booktest'))
]

booktest/urls.py

from django.urls import path, re_path
from booktest import views

app_name = 'booktest'
urlpatterns = [
    path('', views.index, name='index'),
    re_path(r'^(\d+)$', views.show, name='show')

]

views.py

from django.shortcuts import render
from booktest.models import *


def index(request):
    # 查询一个
    # hero = HeroInfo.objects.get(pk=35)
    # context = {'hero': hero}
    # 查询列表(多个)
    list = HeroInfo.objects.all()
    # list = HeroInfo.objects.filter(isDelete=True)
    context = {'list': list}
    return render(request, 'booktest/index.html', context)


def show(request, id):
    context = {'id': id}
    return render(request, 'booktest/show.html', context)

show.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
{{ id }}
</body>
</html>

index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
{# <a href="123">显示</a>  #}
<a href="{% url 'booktest:show' 123 %}">显示</a>
<hr>
{# {{ hero.showname }} #}
{% for item in list %}
    {{ forloop.counter }} :{{ item.hname }}  {# forloop.counter得到循环的第几次 #}
    <hr>
    {% empty %}
    您查询的数据不存在!
{% endfor %}
</body>
</html>
  • url:反向解析
{ % url 'name' p1 p2 %}

{% url 'booktest:show' 123 %}  其中booktest是test4/urls.py/namespace中的内容,
                    show是booktest/urls.py/name中的内容,
                    123是(\d+)需要传递的参数的内容


解释一下页面跳转:
index.html 中如果有  <a href="123">显示</a>
href中123地址。先到test4中匹配空即127.0.0.1:8000
因为有
include('booktest.urls', namespace='booktest')跳转到booktest.urls中
re_path(r'^(\d+)$', views.show, name='show')与(\d+)进行匹配即127.0.0.1:8000/123
再到views.py中找到show函数。
return render(request, 'booktest/show.html', context)跳转到show.html页面显示id

转载于:https://www.cnblogs.com/gaota1996/p/10441967.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值