如何在django中编写一个url .py,这样我就可以做一些像*/page



问题是:

  • 我有一个具有以下模型的应用程序:项目,职位,外展
  • 位置只能通过外键连接到项目和项目
  • 外展连接到一个位置,并且只能使用外键

我可以在我的应用程序几乎任何地方创建一个新项目(其他对象相同)。目前,我写了一个新的项目是从urldashboard/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'),

]

然而,

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

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

和view .py:

def new_jobproject(request, p):

虽然,这是一种很粗糙的方法。它会在几个地方断裂。如果你有一个主urlpatterns数组,其中包含这个'action'应用程序的url作为API,那么这个解决方案将无法在API url之外工作。

例如。如果你有:

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

你像这样访问你的url ->www.myapp.com/api/v1/....../newjobproject,则代码将工作。如果您试图访问www.myapp.com/..../newjobprojectwww.myapp.com/admin/..../newjobproject,那么代码将中断,它将不匹配任何路径。我不确定在那种情况下你怎么让它工作。

如果上面的场景没有问题,如果你不打算使用这些视图作为api,并且你的url模式看起来像这样:

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

那么代码应该适用于所有的url,除了admin/…/newjobproject情况。

相关内容

最新更新