具有不同视图和名称的相同url模式

  • 本文关键字:url 模式 视图 django
  • 更新时间 :
  • 英文 :


我的代码低于

模板看起来像这个

<td><button><a href="{%  url 'testschema' allschema.schema_name %}"> Test</a></button></td>
<td><button><a href="{%  url 'deleteschema' allschema.schema_name %}"> Delete</a></button></td>

url模式

urlpatterns = [
path('<int:id>/', views.confighome, name='config'),
path('<str:schmid>/', views.deleteschema, name='deleteschema'),
path('te<str:schmid>/', views.testschema, name='testschema')
]

views.py

def deleteschema(request,schmid):
some code
return redirect('/configuration/'+str(request.session["project_id"]))
def testschema(request,schmid):
some code
return redirect('/configuration/'+str(request.session["project_id"]))

每当我点击测试按钮时,它实际上调用了删除功能

知道为什么会发生这种情况吗?因为我使用了命名的url参数

提前感谢

url将始终与第二个path(..)匹配,因为每个以te开头的字符串都是一个字符串。因此,您最好使URL不重叠,因为没有一个与第二个path(..)匹配的URL可以与第三个path(..)匹配。不管{% url 'testschema' allschema.schema_name %}由此生成什么URL,如果浏览器发送具有该URL的请求,则它将被第二个path(..)匹配。

例如:

urlpatterns = [
path('<int:id>/', views.confighome, name='config'),
path('de<str:schmid>/', views.deleteschema, name='deleteschema'),
path('te<str:schmid>/', views.testschema, name='testschema')
]

或者更方便:

urlpatterns = [
path('<int:id>/', views.confighome, name='config'),
path('<str:schmid>/delete/', views.deleteschema, name='deleteschema'),
path('<str:schmid>/test/', views.testschema, name='testschema')
]

相关内容

  • 没有找到相关文章

最新更新