python - 如何在 django API 中创建我的用户时发送重置密码电子邮件?
问题描述
我用 django 构建了一个 API,并在使用 Sendinblue 创建一个用户时自动发送欢迎电子邮件。这一步我没有问题。(所以我们在 url /add_user/
)
我有第二个 url 向用户发送链接(uid + 令牌)(感谢他的电子邮件)。为此,我使用了一个外部包:djoser。所以我使用 djoser 的 url/auth/users/reset_password/
和/auth/users/reset_password_confirm/
我的梦想是在单个 url中组合/reset_password/
和
我的问题是其中的逻辑是由 djoser 编写的,所以我无法处理它。或者我不知道怎么做!/add_user/
/add_user/
/reset_password/
/reset_password_confirm/
这是我试图覆盖 djoser 视图的内容:
在 urls.py 中:
path('custom_djoser/', ChangeCredentialsView.as_view(), name='customdjoser'),
在views.py中:
class ChangeCredentialsView(UserViewSet):
def post(self, *args, **kwargs):
print("hello world")
return JsonResponse({"helloworld":"success"})
收到以下错误:
在 ViewSet 上调用 .as_view() 时必须提供 actions 参数。例如 .as_view({'get': 'list'})
所以我删除了 urls.py 中的 .as_view() 并得到了这个错误:
禁止(CSRF 令牌丢失或不正确。):/custom_djoser/
对我来说,这是不可理解的,因为我不使用 csrf 令牌,但我尝试在我的类中的调度函数中使用 @csrf_exempt。我试图class ChangeCredentialsView(UserViewSet, APIView):
用授权令牌定义为我的另一个类。无事可做,每次使用 csrf 令牌出错。我可能会探索一种非常痛苦和愚蠢的方法来做我想做的事情,请告诉我是否有更简单的方法来做到这一点!
解决方案
@Scratch'N'Purr 由于评论空间不足,我在这里回答您:
目前我的add_user
观点看起来像这样(最重要的部分,因为它很大)
class AddUserView(generics.CreateAPIView, APIView):
def post(self, request):
newUser = User(
username = request.POST.get('username'),
password = request.POST.get('password'),
email = request.POST.get('email'),
image = request.FILES['image'],
full_name = request.POST.get('full_name'),
user_type = request.POST.get('usertype'),
contact_number = request.POST.get('phone')
)
newUser.save()
**** then lines of code to send email with Sendinblue ****
通常我使用 request.data 来获取请求正文,但这里有一个文件,所以我不得不使用 formdata。我不得不承认我对序列化程序了解不多,也不使用它
推荐阅读
- linux - 主机操作系统上的 Laravel,虚拟机上的 Oracle 数据库无法通信
- javascript - 汗水警报仅删除第一行 asp.net core html jquery
- javascript - v12 不会删除机器人的反应,但 v13 会删除机器人的反应 (discord.js)
- kotlin - 如何从 Firestore 中获取文档,其中数组字段与 Kotlin 中的字符串匹配?
- php - 加载数据 infile 不在 php 中执行
- javascript - 错误:React 中的“超过最大更新深度”错误
- java - SpotBugs 警告:使用 keySet 迭代器而不是 entrySet 迭代器效率低下
- android - React-native 0.65 (targetSdk=30) android build 由于 react-native-reanimated 而失败
- java - Spring Boot MVC 2.5.3 验证显然不起作用
- json - 从 Json 获取值并使用 powrshell 在 XML 文件中更新?