我通过Django模板传递POST参数。模板是基本的:
<form method="POST" action="{% url 'registration_id' %}">
{% csrf_token %}
<input name="registration_id" value="{{ registration_id }}">
<input name="device_id" value="{{ device_id }}">
<button>Submit</button>
</form>
在model中,registration_id
是必需的TextField
,而device_id
是可选的十六进制字段。要测试我的设置,我使用名为HttpRequester的Mozilla插件。它适用于以下情况:
1-我将内容发布到我的网址,如下所示:
csrfmiddlewaretoken=foobar®istration_id=foo
2-或者像这样:
csrfmiddlewaretoken=foobar®istration_id=foo&device_id=
(即在device_id
中没有传递任何内容,但提及变量)
3-但如果我这样做,则没有任何内容被发布:
csrfmiddlewaretoken=foobar®istration_id=foo&device_id=1234abcd
(确保device_id是十六进制值)
Views.py是:
class DeviceCreateView(FormView):
model = GCMDevice
form_class = DeviceForm
template_name = "deviceobj_form.html"
def form_valid(self, form):
reg_id = self.request.POST.get('registration_id','')
dev_id = self.request.POST.get('device_id','')
if is_hex(dev_id):
GCMDevice.objects.create(registration_id=reg_id, device_id=dev_id)
else:
GCMDevice.objects.create(registration_id=reg_id, device_id='abcdef2222')
return render_to_response('success.html',RequestContext(self.request,{}))
def is_hex(s):
try:
int(s,16)
return True
except ValueError:
return False
我在第三选择中做错了什么?
答案 0 :(得分:0)
我正在使用的推送通知library中出现错误,而不是我上面发布的代码。使用postgres或mysql作为数据库引擎,尝试使用表单和http帖子创建或更新gcm设备失败。验证器正在针对字符串值运行,因此最小和最大验证失败。重写了验证器以对整数值运行。