0

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

这是我的 urls.py

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

这是我的意见.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 = Truesettings.py。有什么问题?谢谢。

4

2 回答 2

4

你必须实现 post 方法。

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

您也可以使用 CreateView 来满足您的要求。

文档:django.views.generic.edit.CreateView

于 2013-05-17T08:17:39.440 回答
0

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

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

class myView(TemplateView):

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

    ... 
    #your view code
于 2013-05-17T08:18:11.727 回答