我想将两个或更多卖家映射到相同的方法ecommerce.views.seller
。以下是工作代码:
urlpatterns = patterns('',
url(r'^(?:store1|store3)/$', 'ecommerce.views.seller'),
)
有什么方法可以用模式声明一些变量并简单地将它传递给urlpatterns。类似的东西:
SELLER_ID = '?:store1|store3'
urlpatterns = patterns('',
url(r'^(SELLER_ID)/$', 'ecommerce.views.seller'),
)
答案 0 :(得分:2)
只需使用常规字符串格式化语法:
url(r'^({})/$'.format(SELLER_ID), 'ecommerce.views.seller')
答案 1 :(得分:0)
您应该将捕获组用于正则表达式路径变量,以便在视图方法中将它们作为关键字参数提供:
https://docs.djangoproject.com/en/1.10/topics/http/urls/#specifying-defaults-for-view-arguments
以上链接有一个很短的例子。
您可能想要做的事情:
urlpatterns = patterns('',
url(r'^store(?P<pk>[0-9]+)/$', 'ecommerce.views.seller'),
)
在电子商务/ views.py中:
def seller(request, pk):
seller = get_object_or_404(Store, pk=pk) # if DB object
# or if not in DB then just use the number
# do your stuff
return response
如果PK指向数据库模型,则使用通用视图:
urlpatterns = patterns('',
url(r'^store(?P<pk>[0-9]+)/$', StoreDetailView.as_view(), name='store_detail'),
)
class StoreDetailView(DetailView):
model = Store
# the rest is django magic, you just have to provide the template