【发布时间】:2016-05-24 09:49:35
【问题描述】:
背景:
在我的 Django view 的 form_valid 方法中,我正在通过 字符串连接 构造一个 URL。假设上述 URL 为 http://example.com/uuid,其中 uuid 是传递给此 form_valid 方法的 POST 变量。
在这个方法中,接下来我将构建一个自定义的HttpResponse 对象,该对象将导致一个非http url,即nonhttp_url = "sms:"+phonenumber+"?body="+body。 body 包含一些文本和我之前通过字符串连接形成的 url(例如“转到此 url:[url]”)。 phonenumber 是任何合法的手机号码。
这样构造的HttpResponse 对象实际上是一个HTML 技巧,用于打开手机的本机短信应用程序,并在其中预先填写电话号码和短信正文。它的常见用法是<a href="sms:phonenumber?body="+body">Send SMS</a>。我本质上是在调用相同的东西,但是是从我的 Django 视图的 form_valid 方法内部调用的。
问题:
如何确保我通过上面的 str 连接形成并传递到非 http url 的 body 部分的 URL 将 Cache-Control 设置为 no-cache?其实我也想要no-store和must-revalidate。同样,我还需要将Pragma 设置为no-cache,将Expires 设置为0,并将Vary 设置为*。
当前代码:
class UserPhoneNumberView(FormView):
form_class = UserPhoneNumberForm
template_name = "get_user_phonenumber.html"
def form_valid(self, form):
phonenumber = self.request.POST.get("mobile_number")
unique = self.request.POST.get("unique")
url = "http://example.com/"+unique
response = HttpResponse("", status=302)
body = "See this url: "+url
nonhttp_url = "sms:"+phonenumber+"?body="+body
response['Location'] = nonhttp_url
return response
【问题讨论】:
标签: python html django url httpresponse