我的代码低于
模板看起来像这个
<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')
]