View在POST上生成空白页

时间:2013-05-17 08:11:47

标签: django

当我从菜单中打开它时,Django显示页面正常(不发送数据)。但是当我通过表单发布数据时,Django会生成一个白色的空白页面。控制台中没有错误消息。

这是我的urls.py

url(r'^signin', myView.as_view(template_name='login.html'), name='signin'),

这是我的views.py

class myView(TemplateView):

    def get_context_data(self,**kwargs):
        context = super(myView, self).get_context_data(**kwargs)
        if self.request.path == '/signup':
            context.update(self.create_user())
        return context

    def create_user(self):
        data = {}
        if self.request.POST:
            if 'email' in self.request.POST and 'user' in self.request.POST \
            and 'password' in self.request.POST:
                User.objects.create_user(self.request.POST['user'],
                                         self.request.POST['email'],
                                         self.request.POST['password'])
                data['msg'] = _('User created')
            else:
                data['error'] = _("Incomplete data")
        return data

这是我发布数据时的控制台日志:

"POST /signin HTTP/1.1" 405 0

我已在DEBUG = True中设置了settings.py。可能有什么不对?感谢。

2 个答案:

答案 0 :(得分:4)

你必须实现post方法。

class MyView(View):
    def post(request, *args, **kwargs):
        # your save logic

您也可以根据需要使用CreateView。

Documentation: django.views.generic.edit.CreateView

答案 1 :(得分:0)

将您的方法create_user重命名为post或定义post方法并从中调用您的方法。

通用视图需要有适当的方法来处理请求类型。

class myView(TemplateView):

    def post(self):
        return self.create_user()

    ... 
    #your view code