Django Home url set to folder



我有一个问题,我想我的地址(无论是本地还是生活)指向我的项目应用程序作为我的主页,但我所做的每一个改变都打破了其他url。我的主要网站URL模式是:

urlpatterns = [
path('admin/', admin.site.urls),
path("projects/", include("projects.urls")),
path("blog/", include("blog.urls")),
]

我试图将path("project/", include("projects.urls"))更改为path("", include("projects.urls")),这打破了博客索引。

我的博客有以下模式:

urlpatterns = [
path("", views.blog_index, name="blog_index"),
path("<slug:slug>/", views.blog_detail, name="blog_detail"),
path("<category>/", views.blog_category, name="blog_category"),
]

和我的项目:

urlpatterns = [
path("", views.project_index, name="project_index"),
path("<slug:slug>/", views.project_detail, name="project_detail"),
path("project/<tag>/", views.project_tag, name="project_tag"),
]

冲突是由于django不知道下面的区别:

http://example.com/blog

http://example.com/(project_slug_called_blog)

因为它们看起来功能相同,只是一个字符串。

您可以颠倒url的顺序,以便首先查找blog

urlpatterns = [
path('admin/', admin.site.urls),
path("blog/", include("blog.urls")),
path("", include("projects.urls")),
]

只要不把项目叫做'blog',那就可以了

或者,如果做不到这一点,您可以使项目详细信息视图的URL更明确

path("<slug:slug>/view-details", views.project_detail, name="project_detail"),

我个人倾向于第二个选项,因为它使URL更易于人类阅读,并且可能是一个更健壮的解决方案。

相关内容

最新更新