如何在 get_absolute_url 中包含其他应用程序的 urls.py:reverse() django?
How to include other app's urls.py in get_absolute_url: reverse() django?
在应用程序 models.py 中,我使用 get_absolute_url
来使用不同应用程序 urls.py 中的 "name" 反转到特定路径 urls.py。
但是我当然会收到错误消息,因为我还没有为该应用程序创建 urls.py,因为 urlpattern 已经存在于其他 urls.py.
那么有没有我可以反向使用的 include(app.urls) 类型的功能?
#app: A - urls.py
urlpatterns = [
path('post/<int:pk>/', PostDetailView.as_view(), name = 'post-detail'),
...
]
#app: B - models.py
def get_absolute_url(self):
return reverse('post-detail',kwargs = {'post_id.id':self.post_id.id})
在您的主 urls.py 文件中,您必须按如下方式添加所有应用程序网址,并在您的 get absolute 方法中调用它。您仅将此方法定义到该特定模型,并通过自身链接到实例。
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('your_app.urls')),
]
您也可以将获取绝对方法修改为
def get_absolute_url(self):
return reverse('post-detail',kwargs = {"pk": self.pk)
在应用程序 models.py 中,我使用 get_absolute_url
来使用不同应用程序 urls.py 中的 "name" 反转到特定路径 urls.py。
但是我当然会收到错误消息,因为我还没有为该应用程序创建 urls.py,因为 urlpattern 已经存在于其他 urls.py.
那么有没有我可以反向使用的 include(app.urls) 类型的功能?
#app: A - urls.py
urlpatterns = [
path('post/<int:pk>/', PostDetailView.as_view(), name = 'post-detail'),
...
]
#app: B - models.py
def get_absolute_url(self):
return reverse('post-detail',kwargs = {'post_id.id':self.post_id.id})
在您的主 urls.py 文件中,您必须按如下方式添加所有应用程序网址,并在您的 get absolute 方法中调用它。您仅将此方法定义到该特定模型,并通过自身链接到实例。
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('your_app.urls')),
]
您也可以将获取绝对方法修改为
def get_absolute_url(self):
return reverse('post-detail',kwargs = {"pk": self.pk)