通过电子邮件请求批准并处理它 Python + Django



也许我在搜索区域中没有问正确的问题,但我找不到答案。我很确定很多人都有这个用例,但作为 Django + Python 的初学者,我需要问它。

我有用户填写表格,数据存储在数据库中。基本上,此表单要求访问数据库,并且在提交表单后,我希望我的程序向用户的经理和DBA发送电子邮件以批准或拒绝它。很简单,对吧?

我的想法是,在这封电子邮件中,我发送两个URL,一个用于批准,一个用于拒绝请求。当单击URL时,我会向服务器发送响应,并在manager_approval字段中进行更新。

有没有人实施过这个解决方案,或者可以指出可以帮助我的东西?

我正在使用Django + Python做所有事情。

问候 马科斯·弗雷西亚

基本上这种技术用于电子邮件验证。这是您应该研究的地方。

假设您有名为请求的模型,它具有用户名之类的字段来标识请求访问权限的人,数据库名称,以及所有内容。但它也将有两个"类似密码"的字段,用于确定请求是否被拒绝。

class Request(models.Model):
user = models.ForeignKey ...
databasename = 
date = 
...
access_granted = models.BooleanField(default=False)
deny_token = models.CharField()
allow_token = models.CharField()

关键是在视图中保存请求时生成这些令牌:

if request.method == POST:
form = RequestForm(request.POST)
if form.is_valid():
data['user'] = form.cleaned_data['user'])
data['databasename'] = form.cleaned_data['databasename'])
...
data['access_token'] = GENERATE_USING_HASH_FUNCTION()
data['deny_token'] = GENERATE_USING_HASH_FUNCTION()
form.save(data)

然后您可以使用模块EmailMultiAlternatives发送 html 电子邮件,如下所示:

subject, from_email, to = 'Request', 'admin@example.com', form.cleaned_data['manager_email']
html_content = render_to_string(HTML_TEMPLATE, CONTEXT) # Just as any regular templates
text_content = strip_tags(html_content)
msg = EmailMultiAlternatives(subject, text_content, from_email, [to], reply_to=["admin@example.com"])
msg.attach_alternative(html_content, "text/html")
msg.send()

在该模板中,您可以构造反向网址:

{% url 'app:grant_access' allow_token=token %} # "token" you get from context
{% url 'app:deny_access' deny_token=token %} # will become example.com/deny_access/7ea3c95, where 7ea3c95 is token

然后像这样向应用 urls.py 添加行:

url(r'^allow_access/(?P<allow_token>[0-9]+)$', CheckAcessView.as_view(), name="app:grant_access"),
url(r'^deny_access/(?P<deny_token>[0-9]+)$', CheckAcessView.as_view(), name="app:deny_access"),]

然后创建CheckAcessView视图。您访问存储在数据库中的请求并检查例如 url "allow_token" 的参数是否等于存储allow_token。如果是这样,请将请求状态更改为允许。

最新更新