【问题标题】:Django - multiple url routers, same url?Django - 多个 url 路由器,相同的 url?
【发布时间】:2017-08-19 11:06:22
【问题描述】:

所以我试图在 django 应用程序中创建一个服务器控制页面,其中包含一个服务器列表,这些服务器通过 uuid 链接到启动、克隆和停止每个相应的服务器。 (想想一个非常糟糕的openstack UI)。这是生成 url 的代码。

<li><a href="{% url 'start' uuid=uuid %}">Start</a></li>
<li><a href="{% url 'clone' uuid=uuid %}">Clone</a></li>
<li><a href="{% url 'stop' uuid=uuid %}">Stop</a></li>

不幸的是,当我单击 Web 应用程序上的克隆链接时,它会启动而不是克隆服务器,这意味着它正在视图中运行启动功能。

以下是 url 的定义方式:

urlpatterns = [
    url(r'^$', views.index, name='index'),
    #url(r'^$', views.transfer, name='transfer'),
    url(r'^malware/$', views.malware, name='malware'), # Add this /malware/ route
    url(r'^about/$', views.about, name='about'), # Add this /about/ route
    url(r'^(?P<uuid>[\w\-]+)$', views.start, name='start'),
    url(r'^(?P<uuid>[\w\-]+)$', views.paranoidfish, name='paranoidfish'),
    url(r'^(?P<uuid>[\w\-]+)$', views.clone, name='clone'),
    url(r'^(?P<uuid>[\w\-]+)$', views.stop, name='stop'),
    url(r'^(?P<uuid>[\w\-]+)$', views.transfer, name='transfer'),
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

我确定这里缺少一些基本的东西,我们将不胜感激。

【问题讨论】:

  • 这些网址都是一样的。你怎么期望 Django 知道你调用了哪一个?

标签: python django python-3.x url


【解决方案1】:

原来不是唯一的网址是问题

这就是我解决问题的方法:

urlpatterns = [

url(r'^start/(?P<uuid>[\w\-]+)$', views.start, name='start'),
url(r'^paranoidfish/(?P<uuid>[\w\-]+)$', views.paranoidfish, name='paranoidfish'),
url(r'^stop/(?P<uuid>[\w\-]+)$', views.stop, name='stop'),
url(r'^transfer/(?P<uuid>[\w\-]+)$', views.transfer, name='transfer'),
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

模板保持不变,因为它动态生成 URL 模式。非常漂亮的imo。

【讨论】:

    猜你喜欢
    • 2020-07-12
    • 1970-01-01
    • 1970-01-01
    • 2017-04-05
    • 1970-01-01
    • 1970-01-01
    • 2017-04-15
    • 2021-08-05
    • 1970-01-01
    相关资源
    最近更新 更多