我尝试查看文档,并阅读了同一主题的几个问题,但无法解决。我一直在尝试按照本教程进行操作,尽管我已经走了很远,但是我仍然无法理解path函数的作用。
此代码段有什么作用?
path('', views.index, name='index'),
这个呢?
path('books/', views.BookListView.as_view(), name='books'),
还是这个?
path('catalog/', include('catalog.urls')),
答案 0 :(得分:0)
假设您位于根项目目录中,也就是说,拥有settings.py
的目录...如果以下path()
位于urls.py
内,只要您有from . import views
在您的导入中...此path()
函数意味着当您在终端中python manage.py runserver
并获得127.0.0.1:8000/时,以下path()
将是主页,或127.0.0.1:8000/。如果您希望它通过(默认路径如下)(如下面的path()一样)用于默认的成功页面,则需要在您的代码中添加一个名为index
的函数同一目录的views.py。
path('', views.index, name='index'),
以下是基于类的视图。由于您是新手,所以我强烈建议您远离他们。当我一无所知时,由于没有明显的控制流程,它们使一切变得更加混乱,因此我不知道它们如何工作。但是要回答您的问题,它与上述操作相同,但是如果在开发服务器运行时在浏览器中键入127.0.0.1:8000/books
,则会触发基于类的视图(function),只要您想链接到它以供用户单击,就可以称为books
。
path('books/', views.BookListView.as_view(), name='books'),
最后一个表示您已使用python manage.py startapp catalog
在终端中创建了一个名为“ catalog”的应用。完成此操作后,您将必须在该应用程序文件夹中创建一个urls.py文件,然后可以在该文件夹中创建特定于该应用程序的urlpatterns。例如,127.0.0.1:8000/catalog
将是目录应用程序的“主页”。但是,您在目录应用程序的urls.py中放入的任何urlpattern都只需要类似path('games/', views.games, name='games')
(以举例说明游戏目录)。
但是此应用程序在此文件中的path()
会自动在其前面加上/catalog/
。因此,上面的games/
示例实际上是127.0.0.1:8000/catalog/games/
。只要您将视图设置为该目录,就会触发视图(功能)提供游戏目录。
为使其更有效,以便您可以正确引用url而不会混淆它们,请在此目录应用程序的urls.py文件中,将app_name = 'catalog'
放在url模式上方。然后,您可以像{% url 'catalog:view_name' %}
path('catalog/', include('catalog.urls')),
如果这仍然令人困惑,我强烈建议您在udemy.com上查看适用于Django 2的内容。经过一番尝试,它将大有帮助。