如何在 Django 中逃脱 ^
how to escape ^ in django
下面是我的代码。
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
以确认注册。
但是电子邮件发送 url 如下所示。
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)/$
然后我的网站returns
当前路径,^activate/(?PFwAAAAA[0-9A-Za-z_-]+)/(?Paxyoyt-906068a2d7255bc3da520c10c5793d22[0-9A-Za-z]{1,13}-[0-9A- Za-z]{1,20})/$, 与这些都不匹配。
我如何使用 {% url %} 转义 %5E ??
您可以尝试使用 url_encoding 对部分进行编码。
from django.utils.http import urlencode
下面是我的代码。
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
以确认注册。
但是电子邮件发送 url 如下所示。
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)/$
然后我的网站returns
当前路径,^activate/(?PFwAAAAA[0-9A-Za-z_-]+)/(?Paxyoyt-906068a2d7255bc3da520c10c5793d22[0-9A-Za-z]{1,13}-[0-9A- Za-z]{1,20})/$, 与这些都不匹配。
我如何使用 {% url %} 转义 %5E ??
您可以尝试使用 url_encoding 对部分进行编码。
from django.utils.http import urlencode