Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django POST未调用视图_Python_Django_Post_Django Templates_Views - Fatal编程技术网

Python Django POST未调用视图

Python Django POST未调用视图,python,django,post,django-templates,views,Python,Django,Post,Django Templates,Views,我试图在我的网站首页创建一个简单的订阅表单。我使用模型表单创建了视图(模型只包含名称和电子邮件作为属性)。当我转到根地址(GET)时,它工作正常并加载表单。然后我用一些数据填充它,单击提交按钮(表单操作可以设置为“”或“/”,结果相同),它重定向到同一根页面,但不加载任何内容,页面保持空白。在控制台中,我可以看到它通过POST方法调用,但甚至没有打印视图函数的第一次打印 有什么想法吗?我知道这一定很傻,但我花了一段时间在里面,还没有发现它可能是什么 在URL.py中: url(r'', Fron

我试图在我的网站首页创建一个简单的订阅表单。我使用模型表单创建了视图(模型只包含名称和电子邮件作为属性)。当我转到根地址(GET)时,它工作正常并加载表单。然后我用一些数据填充它,单击提交按钮(表单操作可以设置为“”或“/”,结果相同),它重定向到同一根页面,但不加载任何内容,页面保持空白。在控制台中,我可以看到它通过POST方法调用,但甚至没有打印视图函数的第一次打印

有什么想法吗?我知道这一定很傻,但我花了一段时间在里面,还没有发现它可能是什么

在URL.py中:

url(r'', FrontPage.as_view(template_name='rootsite/frontpage.html')),
在rootsite/views.py中

class FrontPage(TemplateView):
    '''
    Front (index) page of the app, so that users can subscribe to
    have create their own instance of the app
    '''

    template_name = 'rootsite/frontpage.html'

    def get_context_data(self, 
                         *args, 
                         **kwargs):

        c = {}
        c.update(csrf(self.request))
        print self.request.method
        if self.request.method is 'POST':
            print 'OK - POST IT IS, FINALLY'
            form = NewUsersForm(self.request.POST)
            print form.__dict__
            if form.is_valid():
                form.save()
                return HttpResponseRedirect('/' + '?thanks=1')
         else:
            form = NewUsersForm()

        return {'form':form}

您是否在模板中包含csrf_令牌(根据此处的示例:)


{{form.as_table}}
{%csrf_令牌%}

我可能错了,但我认为Django不会接受没有csrf令牌的POST请求?

您不能从get\u context\u数据中返回重定向-它仅用于上下文数据,因此得名


为此,您应该使用适当的方法,其中包括表单验证后重定向的方法。

可能是因为templateview!其他类基视图是否存在此问题?同时调用两次
template_name
;一次在
views.py
一次在
url.py
我正在使用crispy表单来呈现表单。然而,这一解决办法并没有解决问题。但是谢谢。
<form action="" method="post">
    <table>
        {{ form.as_table }}
    </table>
    {% csrf_token %}
    <input type="submit" value="Submit">
</form>