[英]Django URL regex between various exact string matches
Django (v2.2)
我正在嘗試實現一個由三個完全匹配all
、 gs
和webservice
組成的路由,以在頁面上的表格中進行過濾。
path(r'^(?P<mode>all|gs|webservice)$', get_orders, name='dash.orders_mode'),
path('(?P<mode>/^all$|^gs$|^webservice)/$', get_orders, name='dash.orders_mode'),
兩種方式似乎都不起作用
這是因為路線上也有 id。
編輯:
這是問題的解決方案( NoReverseMatch at /dash/orders/all
沒有NoReverseMatch at /dash/orders/all
):
re_path('(?P<mode>(all|gds|ws))', get_orders, name='dash.orders_mode'),
我會避免將業務邏輯放入您的網址中。
path('<mode>', get_orders, name='dash.orders_mode'),
那么在你看來
from django.http import Http404
def get_orders(request, mode):
if mode not in ['all', 'gs', 'webservice']:
raise Http404
為了使用正則表達式,你應該使用re_path(..)
[Django-doc] , path(..)
[Django-doc]是一個使用路徑轉換器的函數:
re_path(r'^(?P<mode>all|gs|webservice)$', get_orders, name='dash.orders_mode'),
話雖如此,最好在這里簡單地創建三個路徑,也許使用kwargs=…
參數將額外的數據傳遞給視圖。 這樣你就可以使正在發生的事情更具可讀性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.