DJANGO: Установите site_id для сайтов pk
Я следую этому руководству для проверки электронной почты. Версия, с которой работает автор, старая. Я получил ошибку, которая гласила.
Reverse for ‘activate’ with keyword arguments ‘{‘uidb64’: b’OA’, ‘token’: ‘4tm-3fcfb375c8ba14f9a95b’}
. Я исправил это через первый комментарий. Письмо было отправлено .Но ссылка вела на www.example.com . Во втором комментарии написано, как это исправить. Комментарий был следующим:
Для тех, кто использует Django 3, вы должны изменить некоторый код
- Six is deprecated in Django 3, you can use ‘import six’ instead of ‘from django.utils import six’
- To send html email, add email.content_subtype = “html” after EmailMessage Object.
- activate url should be path(‘activate//’, views.activate, name=’activate’),
- get_current_site(request) will return example.com as default when SITE_ID=1 in your settings.py. Add your site name and domail in admin site (/admin/sites/site/) and replace SITE_ID with your sites pk.
Но я не понял, как установить SITE_ID для моих сайтов pk.
In settings.py
set
BASE_URL = 'https://www.yourdomainname.com'
Не включайте трелинг /
Также, вы должны упомянуть эту строку в том же файле
SITE_ID = 1
Более того, перейдите на ваш django admin
канал, по умолчанию /admin
, и перейдите на sites
вкладку/модель и добавьте/отредактируйте ваш site
в соответствии с вашими ip/domainName
и display name
. Это important part
нужно сделать.
Если вы пока тестируете локально, то можете использовать 127.0.0.1:8000
в ip/domainName
и yourdomainNAme.com
в display name
Если вы развертываете или используете live, вы можете использовать фактический ip вашего сервера в ip/domainname
или также вы можете использовать ваше доменное имя (поскольку оно сопоставлено с вашим ip через систему DNS) и отображаемое имя будет таким же.
Надеемся, это решит вашу проблему или вопрос.