python - 尝试将Django中urls.py中的字符串转换为所有小写字母?

标签 python django django-urls lowercase

本质上,我正在尝试将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/

相关文章:

python中的sql语句优化

javascript - AJAX 未按预期更新数据库查询

python - 使用 Django 信号传递附加属性

Django i18n url 不适用于 en-us 子语言

Django:如何在我的项目 urlconf 中覆盖应用程序提供的 url?

regex - 使 Regex Django URL token 可选

Python 无法正确排序 Unicode

python - 谷歌趋势爬虫: CSV writing issues

python - 如何在 NumPy 中一次乘以 3 个以上的向量

django - 使用 django 和 xgettext 进行本地化