问题是:
- 我有一个具有以下模型的应用程序:项目,职位,外展
- 位置只能通过外键连接到项目和项目
- 外展连接到一个位置,并且只能使用外键
我可以在我的应用程序几乎任何地方创建一个新项目(其他对象相同)。目前,我写了一个新的项目是从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/..../newjobproject
或www.myapp.com/admin/..../newjobproject
,那么代码将中断,它将不匹配任何路径。我不确定在那种情况下你怎么让它工作。
如果上面的场景没有问题,如果你不打算使用这些视图作为api,并且你的url模式看起来像这样:
urlpatterns = [
path('admin', admin.site.urls),
path('/', include('action.urls')),
]
那么代码应该适用于所有的url,除了admin/…/newjobproject情况。