本质上,我正在尝试将example.com/products/productName/形式的动态网址转换为productName均为小写的网址。在urls.py中,我有
path('products/<str:productName>/', product_detail_view)
...这应该重定向到产品详细信息页面,并使用小写形式的productName(无论可能是什么)。
我尝试将.lower()附加到'products //'上,这将字段productName转换为productname,而在model.py中无法识别该字段。
然后我尝试了“产品//”,这也根本不起作用?有人有什么建议吗?
最佳答案
您可以创建一个基本的RedirectView,该目录将重定向到详细信息视图,产品名称为小写
from django.views.generic.base import RedirectView
class ProductLowerCaseRedirectView(RedirectView):
permanent = True
query_string = True
pattern_name = 'product_detail_view'
def get_redirect_url(self, *args, **kwargs):
kwargs['productName'] = kwargs['productName'].lower()
return super().get_redirect_url(*args, **kwargs)
现在,您可以利用Django依次遍历您的网址这一事实,从而发挥您的优势。您创建一个仅接受小写产品名称的模式,这是您的主视图,您还具有重定向视图,该视图接受同一路径上的所有请求,但不接受小写
re_path(r'^products/(?P<productName>[a-z]*)/$', product_detail_view, name='product_detail_view')
path('products/<str:productName>/', ProductLowerCaseRedirectView.as_view())
关于python - 尝试将Django中urls.py中的字符串转换为所有小写字母?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59797040/