深入Django(五)

简介: Django的URL路由系统将URL映射到视图。创建URLconf涉及编写视图、定义URL模式(如`home`和`about`)并在项目主`urls.py`中包含应用URL。动态URL模式允许捕获数据,如`post/<int:post_id>/`,并在视图中使用。命名URL便于模板和视图中引用,通过`{% url %}`模板标签或`reverse`函数。正则表达式用于更复杂URL模式匹配。URL路由是Django中组织请求与响应的核心机制。

Django的URL路由系统

引言

在前四天的教程中,我们分别介绍了Django的基本概念、模型、视图和模板系统。今天,我们将讨论Django的URL路由系统,这是将URL路径映射到视图函数的机制。

Django URL路由概述

Django的URL路由系统允许你将URL路径映射到Python函数(视图)上。这样,当用户访问特定的URL时,Django就知道应该调用哪个视图来处理请求。

创建URLconf

  1. 创建视图:首先,确保你已经创建了视图函数或类。
  2. # views.pyfrom django.http import HttpResponsedef home(request):    return HttpResponse("Welcome to the home page!")def about(request):    return HttpResponse("About us page.")
  3. 编写URL配置:在应用目录下,创建一个urls.py文件,定义URL模式。
  4. # urls.pyfrom django.urls import pathfrom . import viewsurlpatterns = [    path('', views.home, name='home'),    path('about/', views.about, name='about'),]
  5. 这里,我们定义了两个URL模式,分别对应homeabout视图。
  6. 包含应用的URLconf:在项目的主urls.py文件中,包含应用的URLconf。
  7. # project/urls.pyfrom django.contrib import adminfrom django.urls import include, pathurlpatterns = [    path('admin/', admin.site.urls),    path('blog/', include('myapp.urls')),  # 包含应用的URLconf]

动态URL模式

Django允许你在URL中使用动态部分,这样视图就可以接收来自URL的数据。

  1. 捕获动态数据:在URL模式中,使用尖括号< >来定义动态部分。
  2. # urls.pyurlpatterns = [    path('post/<int:post_id>/', views.post_detail, name='post_detail'),]
  3. 在视图中访问动态数据:动态捕获的数据会作为参数传递给视图。
  4. # views.pydef post_detail(request, post_id):    post = get_object_or_404(Post, pk=post_id)    return render(request, 'post_detail.html', {'post': post})

命名URL

Django允许你为URL模式命名,这样你就可以在模板和视图中引用它们。

  1. 命名URL模式:在定义URL模式时,添加name参数。
  2. path('post/<int:post_id>/', views.post_detail, name='post_detail'),
  3. 在模板中使用命名URL:使用{% url %}模板标签来生成URL。
  4. <!-- templates/base.html --><a href="{% url 'post_detail' post.id %}">View Post</a>
  5. 在视图中使用命名URL:使用reverse函数来获取URL。
  6. from django.urls import reversedef some_view(request):    post_detail_url = reverse('post_detail', args=[post.id])    # 使用post_detail_url

正则表达式URL

除了路径转换器外,Django还支持使用正则表达式定义URL模式。

复制

# urls.pyfrom django.urls import re_pathfrom . import viewsurlpatterns = [    re_path(r'^blog/(?P<year>[0-9]{4})/$', views.year_archive),]

总结

在今天的教程中,我们学习了Django的URL路由系统的基本概念,包括如何定义URL模式、捕获动态数据、命名URL以及使用正则表达式。URL路由是Django中连接用户请求和视图的关键部分,它使得Web应用的结构更加清晰和模块化。

相关文章
|
测试技术 Python Linux
Django初探
对于我来说,现在处于一个特殊的状态,就是知道哪些东西是需要的,相对重要的,但是我也很清楚的知道,这些东西是我目前不擅长的。所以为了能够落实自己的想法,同时逼迫自己学习一些原本陌生的东西,其实是一件很有意思的事情,前提是不能把自己逼得太紧,否则除了压力就是各种纰漏。
1392 0
|
索引 Python 数据库
民意调查Django实现(二)
版权声明:您好,转载请留下本人博客的地址,谢谢 https://blog.csdn.net/hongbochen1223/article/details/50114495 我们接着第一讲中的代码编写。
730 0
|
数据库 数据安全/隐私保护 Python
继续Django
环境准备 1、    创建一个Django后,Django的目录: │ manage.py │ ├─Django_s1 │ settings.py │ urls.py │ wsgi.
887 0
|
前端开发 关系型数据库 数据库
Django初探(二)
之前写过一篇Django的介绍,简单部署之后就没有深入跟进了。 Django初探 上周末去广州参加技术大会,在往返的飞机上,自己调试了下Django里面的内容。
1303 0
|
算法 前端开发 网络安全
【Django】Hello,DJango!
这样就在主目录下创建了一个自己的项目以下统称创建的项目路径为根目录(即ppeua_app/)
123 0
|
Web App开发 前端开发 数据库
Django中的ModelForm
一、ModelForm的基本用法示例: from django import forms from app01 import models class BookModelForm(forms.
1182 0
|
9月前
|
前端开发 数据管理 API
深入Django(二)
本文介绍了Django的模型(Models)系统,它是Django框架中处理数据库的核心部分。模型是通过Python类定义的,对应数据库中的表,属性代表表的字段。通过模型,可以方便地操作数据,如创建、查询、更新和删除记录。文中展示了如何创建`Author`和`Post`模型,以及如何使用ORM进行对象操作。此外,还提到了模型的高级特性,如字段选项、字段类型、关系以及自定义方法和属性,这些都是Django高效管理数据的关键。理解模型对于Django应用开发至关重要。
47 1
|
Shell API 数据库
民意调查Django实现(一)
版权声明:您好,转载请留下本人博客的地址,谢谢 https://blog.csdn.net/hongbochen1223/article/details/49998301 经过两天的python2.7的学习和Django的基础部分的了解,在Django的官网上,我看到了一个实例程序,该实例程序是通过一个基本民意调查程序的完成来深入理解Django框架。
1250 0
|
9月前
|
SQL 数据库 数据库管理
深入Django(七)
Django的数据库迁移系统是管理数据库模式变化的关键组件,自动化创建、修改和删除表及字段。它提供版本控制,便于团队协作。通过`makemigrations`生成迁移文件,`migrate`应用到数据库。迁移支持依赖关系和数据迁移功能,允许填充初始数据或执行数据转换。这个系统简化了数据库管理,促进了开发中的数据一致性。
65 5
|
9月前
|
Python
深入Django(三)
本文详细介绍了Django视图(Views)。视图是Django中处理用户请求并返回响应的函数或类,负责应用程序逻辑。文章通过实例展示了如何创建简单视图、使用类视图以及如何与模板配合动态生成HTML内容。此外,还提到了视图处理表单、权限认证和错误处理的功能。总之,Django视图是应用的核心组件,用于处理业务逻辑和用户交互。
41 2

热门文章

最新文章