Django框架学习笔记(7.基于正则表达式的URL)

创建Django工程,配置完成,创建APP


urls.py

from django.conf.urls import url
from django.contrib import admin
from django.urls import path
from app01 import views
urlpatterns = [
    path('admin/', admin.site.urls),
    path('index/', views.index),
    url('^detail-(\d+).html', views.detail),
]


views.py

from django.shortcuts import render
from django.shortcuts import redirect

# Create your views here.

USER_DICT = {
    '1': {'name': 'root1','email': 'root@live.com'},
    '2': {'name': 'root2','email': 'root@live.com'},
    '3': {'name': 'root3','email': 'root@live.com'},
    '4': {'name': 'root4','email': 'root@live.com'},
    '5': {'name': 'root5','email': 'root@live.com'},
}



def index(request):
    return render(request, 'index.html', {'user_dict':USER_DICT})

def detail(request,nid):
    detail_info = USER_DICT[nid]
    return render(request, "detail.html", {'detail_info': detail_info})

index.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<ul>
    {% for k,row in user_dict.items %}
        <li><a target="_blank" href="/detail-{{ k }}.html">{{ row.name }}</a></li>
    {% endfor %}
</ul>
</body>
</html>


detail.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h1>详细信息</h1>
<h6>用户名:{{ detail_info.name }}</h6>
<h6>邮箱:{{ detail_info.email }}</h6>
</body>
</html>



运行:


点击后,以及新的URL:





URL要传递多个数据时候,严格按照顺序传递的,并且函数定义必须有相应个数的参数,

可以这样写改变顺序:

url(r'^detail-(?P<nid>\d+)-(?P<uid>\d+)', views.detail),

def detail(request, nid, uid):

写成这样后可以穿任意个数参数:

def detail(request, *args, **kwargs):

建议使用这种方式





  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Django中使用正则表达式进行路由需要使用re_path()函数。在urls.py文件中,可以通过re_path()函数来定义路由规则。例如,可以使用"^hello/$"来匹配以hello/结尾的路径,并将其映射到对应的视图函数。如果需要在路由中传递参数,可以使用正则表达式的语法来定义参数的格式,例如"^hello/(?P<yy>\[0-9\]+)/"可以匹配以hello/开头,后面跟着一个数字的路径,并将该数字作为参数传递给对应的视图函数。\[1\]\[2\] 另外,还可以使用url()函数来定义路由规则。例如,可以使用"url(r'^detail-(\d+)-(\d+).html',views.detail)"来匹配以detail-数字-数字.html结尾的路径,并将两个数字作为参数传递给对应的视图函数。\[3\] #### 引用[.reference_title] - *1* [正则表达式djangourls中的用法](https://blog.csdn.net/weixin_44614406/article/details/87913286)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [django框架——路由系统(正则表达式)](https://blog.csdn.net/xmxt668/article/details/89504320)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Django基于正则表达式URL](https://blog.csdn.net/zhuanglicheng/article/details/109200796)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值