如何在 django 中转义 ^

Posted

技术标签:

【中文标题】如何在 django 中转义 ^【英文标题】:how to escape ^ in django 【发布时间】:2022-01-21 21:05:40 【问题描述】:

以下是我的代码。

url.py

app_name = 'home'
urlpatterns = [
...
    path(r'^activate/(?P<uidb64>[0-9A-Za-z_\-]+)/(?P<token>[0-9A-Za-z]1,13-[0-9A-Za-z]1,20)/$',
        views.Certification.as_view(), name='activate'),

]

acc_active_emal.html

% autoescape off %
Hi  user.username ,
Please click on the link to confirm your registration,
 domain % url 'home:activate' uidb64=uid token=token %
% endautoescape %

views.py

    def post(self, request, pk = None):
        ...
        message = render_to_string('registration/acc_active_email.html', 
            'user': user,
            'domain': 'mydomain', # current_domain
            'uid': urlsafe_base64_encode((user.pk).to_bytes(5, 'little')),
            'token': account_activation_token.make_token(user),
        )
        to_email = form.cleaned_data.get('email')
        email = EmailMessage(
            mail_subject, message, to=[to_email]
        )
        email.send()
        return HttpResponse('Please confirm your email address to complete the registration')

当用户注册我的网站时,我发送active_email 以确认注册。

但电子邮件发送如下网址。

mydomain/%5Eactivate/(%3FPFwAAAAA%5B0-9A-Za-z_%5C-%5D+)/(%3FPaxyoyt-906068a2d7255bc3da520c10c5793d22%5B0-9A-Za-z%5D%7B1,13%7D-%5B0 -9A-Za-z%5D%7B1,20%7D)/$

然后我的网站返回

当前路径,^activate/(?PFwAAAAA[0-9A-Za-z_-]+)/(?Paxyoyt-906068a2d7255bc3da520c10c5793d22[0-9A-Za-z]1,13-[0-9A -Za-z]1,20)/$,与这些都不匹配。

我如何使用 % url % 转义 %5E ??

【问题讨论】:

【参考方案1】:

您可以尝试使用 url_encoding 对部分进行编码。

from django.utils.http import urlencode

【讨论】:

以上是关于如何在 django 中转义 ^的主要内容,如果未能解决你的问题,请参考以下文章

如何在 django url 中转义“/”

django 在 json 中转义为 html

从 django 模板中转义 JSON 数据的正确方法

如何在 Presto 中转义单引号?

如何在 MySql 中转义撇号(')?

如何在 JavaScript 中转义单引号 ( ' )? [复制]