【问题标题】:How to write a urls.py in django so that I can do something like */page如何在 django 中编写 urls.py 以便我可以执行 */page 之类的操作
【发布时间】:2026-01-08 08:35:01
【问题描述】:

问题来了:

  • 我有一个具有以下模型的应用:项目、职位、外展
  • 职位与项目相关联并且项目仅使用外键
  • 外展连接到一个位置,并且位置仅使用外键

我几乎可以在我的应用程序的任何位置创建一个新项目(其他对象也是如此)。目前我写了一个新项目是从 url dashboard/newjobproject 创建的,但我会这样做,以便根据我所在的页面,url 简单地变成 www.myapp.com/..../newproject

有什么方法可以编写urls.py 来实现这一目标?

from django.urls import path
from action import views

app_name = 'action'

urlpatterns = [
    # ex: /action/
    path('', views.login, name='login'),
    path('dashboard/', views.dashboard, name='dashboard'),
    path('contacts/', views.contacts, name='contacts'),
    path('projects/', views.project, name='project'),

    path('contacts/newcontact', views.new_contact, name='new_contact'),
    path('projects/newjobproject', views.new_outreach, name='new_outreach'),
    path('dashboard/newjobproject', views.new_jobproject, name='new_jobproject'),
    path('projects/<uuid>/newjobposition', views.new_jobposition, name='new_jobposition'),
    
]

然而,

【问题讨论】:

    标签: django django-urls


    【解决方案1】:

    尝试将其添加到 urlpatterns 的底部:

    path('<path:p>/newjobproject', views.new_jobproject, name='whatever-name-you-want'),
    

    在你的views.py中:

    def new_jobproject(request, p):
    

    Tbh 不过,这是一种很老套的方法。它会在几个位置破裂。如果您有一个主 urlpatterns 数组,其中包含此“操作”应用程序的 url 作为 API,则此解决方案将无法在 API url 之外工作。

    例如。如果你有:

    urlpatterns = [
      path('admin/', admin.site.urls),
      path('api/v1/', include('action.urls')),
    ]
    

    然后您像这样访问您的网址 -> www.myapp.com/api/v1/....../newjobproject,然后代码将起作用。如果您尝试访问www.myapp.com/..../newjobprojectwww.myapp.com/admin/..../newjobproject,则代码将中断并且它不会匹配任何路径。我不确定在这种情况下你如何让它工作。

    如果上述情况不是问题,如果您不打算将这些视图用作 API,并且您的 urlpatterns 看起来像这样:

    urlpatterns = [
      path('admin', admin.site.urls),
      path('/', include('action.urls')),
    ]
    

    那么代码应该适用于除 admin/.../newjobproject 案例之外的所有 url。

    【讨论】:

    • 谢谢!这是很好的输入!我认为你是对的,它可能会坏,但我会看看我是否可以调整一些东西并让它工作!谢谢!