在django视图中处理发布请求并将其重新发送到另一个视图的方法

时间:2016-02-08 07:26:01

标签: django

我有一个视图,从HTML表单接收一个帖子请求,我喜欢做一些过程,然后发送另一个帖子请求到另一个视图与一些原始数据,以及我添加到它的一些更多数据,< / p>

我读到HTTP不允许传递您收到的相同帖子请求。

我阅读了官方文档并且没有找到这样做的方法,我读到了关于库请求的内容,当我尝试使用它然后发送httpresponseredirect我发出的请求时,它通过在地址栏中写下大量的东西来继续发送它作为帖子,它看起来有点像尝试使用get而不是post。

我在这里找到了这些问题:

Which function in django creates a HttpRequest instance and hands to a view?

Simulating a POST request in Django

但我不了解它如何从我的django应用程序以有效的方式创建请求,并将其发送到另一个应用程序的另一个视图。

post_data = {'name': 'something'}
response = requests.post('http://localhost:8000/polls/thanks/', name =  "somthing")
content = response.content
return HttpResponseRedirect(content)

1 个答案:

答案 0 :(得分:1)

视图只不过是python中的函数,因此没有任何东西阻止您将参数传递到单独的视图中。是否总是一件好事是另一回事

def view_a(request):
    # Logic here
    return view_b(request)

根据您的评论:

您尝试做的事情似乎是一种用.get方法可以实现的长途跋涉方式

last_name = request.POST.get('last_name', generate_name())

如果提供了姓氏,它将使用姓氏,否则将生成一个。

如果你正在使用表单,你可以做同样的事情,只需要用干净的方法

def clean_last_name(self):
    last_name = self.cleaned_data.get('last_name')
    if last_name:
        return last_name
    else:
        return generate_name()