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) и отображаемое имя будет таким же.
Надеемся, это решит вашу проблему или вопрос.