Django 学习备忘录 – urlpatterns 和 path 函数
首先
这是关于Django的我的个人学习笔记。
为了能够回顾在ChatGPT4中查询的内容和额外查询的内容,我将其总结为一篇文章。
由于没有进行信息核实,如果有任何错误,请指正。
urlpatterns的作用是什么?
urlpatterns是Django框架中的重要组件,定义了URL和视图之间的映射关系。这使得Django能够将收到的HTTP请求(特别是URL)路由到适当的视图函数或视图类。
具体而言,urlpatterns是一个在urls.py配置文件中定义的Python列表,其中每个元素都是由path()函数或re_path()函数生成的URL模式。这些函数的作用是将特定的URL模式与视图关联起来。
有关urlpatterns和path函数的写法方式
urlpatterns是一个Python列表,其中每个元素都是由path()函数或re_path()函数生成的URL模式。
path()函数接受三个参数:
ルート(route): URLのパターンを文字列で指定します。このパターンはビューが呼び出されるべきURLを定義します。
ビュー(view): 指定されたURLパターンがマッチしたときに呼び出されるビュー関数またはクラスベースビューを指定します。
名前(name、オプション): URLパターンに名前を付けることができます。これにより、テンプレートやビュー内からこのURLパターンを参照することが可能になります。
例如,可以通过以下方式定义urlpatterns:
from django.urls import path
from . import views
urlpatterns = [
#path('root', view, name='name')
path('', views.home, name='home'),
path('contact/', views.contact, name='contact'),
path('about/', views.about, name='about'),
]
在path()函数的根目录下,只需要填写域名之后的部分。
在这个例子中,按照顺序分别将请求映射到以下页面的视图:
‘http://yourwebsite.com/’
‘http://yourwebsite.com/contact/’
‘http://yourwebsite.com/about/’
除了path()函数外,您还可以使用re_path()函数来定义URL模式。re_path()函数可以使用正则表达式来定义更复杂的URL模式。
另外,您还可以使用include()函数来从其他urls.py模块中包含URL模式。这对于大型项目或使用多个Django应用程序尤其有用。
from django.urls import include, path
urlpatterns = [
path('posts/', include('posts.urls')),
]
from django.urls import path
from . import views
urlpatterns = [
path('',views.index, name='index')
]
在上述情况下,URL”posts/”会映射到posts.urls模块中的URL模式。具体来说,当请求”posts/”时,它会映射到posts.urls模块中的空字符串。
在posts.urls模块中,由于“”(空字符串)被映射到views.index视图,所以当请求post/的URL时,将调用views.index视图。
因此,通过这个设置,’posts/’URL映射到views.index视图,并执行在views.py中定义的index函数。
from django.shortcuts import render
def index(request):
return render(request, 'posts/index.html')
views.py的index函数会渲染(转换为HTML)并返回posts目录中的index.py。
此模板(现在是posts/index.html的例子)应位于posts/templates/posts/目录中。
这是因为Django的模板搜索算法会搜索应用程序的templates/子目录内。
请将“posts”替换为每个应用程序的名称。
因此,当收到对’http://yourwebsite.com/’的请求时,将返回’posts/index.html’。
上述是urlpatterns的基本使用方法。