2013-05-17 104 views
0

當我從菜單中打開它(沒有發送數據)時,Django顯示頁面正常。但是當我通過表單發佈數據時,Django會生成一個白色的空白頁面。控制檯中沒有錯誤消息。View在POST上產生空白頁面

這是我的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 in settings.py。什麼可能是錯的?謝謝。

+2

'405方法不允許'是你的錯誤,你錯過了你的發佈方法 –

+1

不要爲此使用'TemplateView'。如果你堅持使用CBV去遵循慣例並使用'CreateView'。你的接班人會感謝你。 –

+0

@limelights謝謝。我會改變我的代碼。我在這個問題上缺乏完整的例子。 – asofyan

回答

0

重命名你的方法create_userpost或定義post方法,並從中調用你的方法。

通用視圖需要適當的方法來處理請求類型。

class myView(TemplateView): 

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

    ... 
    #your view code