如何访问FormVi中的请求对象

2024-09-27 19:26:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我想访问FormView中的request对象并获取客户端IP。众所周知,在html表单中放置一个隐藏字段是不太可靠的,因为如果用户愿意,它可以被用户更改。所以,我选择在后面做。我使用ModelForm作为FormView的form_class,并排除表单中的ip字段。问题来了,我知道如何动态地添加ip字段。我总是不能成功地保存模型。 这是我的密码。在

models.py

class MyModel(models):
    ip = models.GenericIPAddressField()
    [...]

forms.py

^{pr2}$

views.py

class MyView(FormView):
    form_class = MyForm
    [...]

我试图更改psot()方法,并手动添加request.POSTip字段,但我发现我不知道如何传递表单实例。我花了一整夜来解决这个问题,最后失败了。。 提前提供帮助的坦克。。在

谢谢丹尼尔回答这个问题。在

我把代码改成了:

views.py

class PollView(FormView):
    template_name = 'poll.html'
    form_class = PollForm
    success_url = '/thanks/'

    def get_ip(self,request):
        if request.META.has_key('HTTP_X_FORWARDED_FOR'):  
            ip =  request.META['HTTP_X_FORWARDED_FOR']  
        else:  
            ip = request.META['REMOTE_ADDR']
        return ip

    def form_valid(self, form):
        form.instance.ip = self.get_ip(self.request)
        super(PollView,self).form_valid(form)

但我有个错误:

ValueError at /
The view poll.views.PollView didn't return an HttpResponse object. It returned None instead.

Tags: 用户pyselfipform表单modelsrequest

热门问题