文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

diango路由分发

2023-01-30 22:05

关注

1个Django 项目里面有多个APP目录大家共有一个 url容易造成混淆,于是路由分发让每个APP的拥有了自己单独的url


例如:将blog应用的url分离出来

1、进入mysite目录,修改urls.py文件

from django.contrib import admin
#分离路由,需要导入include方法
from django.urls import path,re_path,include

urlpatterns = [
    path('admin/', admin.site.urls),
    #注意include的是字符串形式的 文件路径
    path('blog/', include('blog.blog_urls')),
]

进入blog目录,创建文件blog_urls.py,内容如下:

from django.urls import path,re_path,include
from blog import views

urlpatterns = [
    re_path('index/(\d+)/', views.index),  # 分页
    re_path('detail/(\d+)/', views.detail),  # 详细信息
]


2、业务处理函数代码 mysite/blog/views.py,内容如下:

from django.shortcuts import render,HttpResponse

# 临时存放一些数据,生产环境中,这些数据都是保存在数据库中
USER_LIST = []
for item in range(108):
    temp = {"id": item, "username": "name"+str(item), "email": "email"+str(item)}
    USER_LIST.append(temp)

def index(request, page):
    # 将用户信息分页展示
    # 第一页  0-9
    # 第二页  10-19
    # 第三页  20-29
    page = int(page)
    start_id = (page - 1) * 10
    end_id = page * 10 -1
    #用户列表
    user_list = USER_LIST[start_id:end_id]

    return render(request, "index.html", {"user_list": user_list})

def detail(request, nid):
    # 用户ID的详细信息
    nid = int(nid)
    current_detail_dict = USER_LIST[nid]
    return render(request, "detail.html", {"current_detail_dict": current_detail_dict})


3、分页html代码 mysite/templates/index.html,内容如下:

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

    <table>
        <thead>
            <tr>
                <td>ID</td>
                <td>用户名</td>
                <td>详细</td>
            </tr>
        </thead>
        <tbody>
            {% for item in user_list %}

                <tr>
                    <td>{{ item.id }}</td>
                    <td>{{ item.username }}</td>
                    {#这里要加blog,否则点击之后,提示404#}
 <td><a href="/blog/detail/{{ item.id }}/" target="_blank">查看详细</a></td>
                </tr>
            {% endfor %}

        </tbody>

    </table>


</body>
</html>


4、用户详细信息html代码 mysite/templates/detail.html,内容如下:

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

    <ul>
        <li>{{ current_detail_dict.id }}</li>
        <li>{{ current_detail_dict.username }}</li>
        <li>{{ current_detail_dict.email }}</li>

    </ul>

</body>
</html>


5、目录结构

mysite/
├── blog
│   ├── admin.py
│   ├── apps.py
│   ├── blog_urls.py
│   ├── __init__.py
│   ├── models.py
│   └── views.py
├── manage.py
├── mysite
│   ├── __init__.py
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
└── templates
    ├── detail.html
    └── index.html


6、访问用户信息分页url,点击页面查看详细

通过访问url

http://127.0.0.1:8000/blog/index/1/

最后的数字可以换成其他的

blob.png

点击查看详细,就可以看到用户详细信息

blob.png


阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯