2013-05-07 76 views
0

I`ve在urls.py重定向得as_view()ClassView中的方法壓制「搜索」按鈕 有後如果諸如:Django的渲染不`噸得到的圖

def as_view(): 
    if request.method == 'POST': 
     //sth 
    elif request.GET.get('test1') or request.GET.get('test2'): 
     //sth 
    else: 
     form = myForm() 
    return render(request, 'template.html', {'form' : form, 'arg': self.arg}) 

有奇怪的情況:在我的家用電腦上它可以工作,但在任何其他情況下都不行 詳細地說,我已經得到這個文件在服務器上,我連接到服務器,切換在服務器上配置virtualenv,並使運行服務器0:端口

當我在我的家用電腦上這樣做一切正常,但如果然後我連接到另一臺計算機的http:// sererIP:端口,按下執行方法as_view()的「Search」按鈕,在代碼中找到這個「else」,然後窗體被初始化,但返回渲染器不會給我任何東西只有白頁。當我檢查服務器輸出時,我得到了

[07/May/2013 05:54:33] "POST/HTTP/1.1" 405 0 

紅色。

從筆記本電腦連接到服務器並使runserver 0:端口即使在這檯筆記本電腦上也有同樣的問題。我試圖比從家用電腦連接測試,也得到了白頁。

+4

您不應該重寫'as_view()'。只能在'urls.py'中使用'get()','post()','delete()'等方法並使用'as_view() – 2013-05-07 11:23:17

回答

1

一類基於視圖的as_view()不應該返回一個HTTP響應,但可調用的函數... 如果你想送出去GET請求的響應,爲您的視圖類添加get方法:

class MyView(View): 
    def get(request): 
     # return your http response here 

如果您想瀏覽Django的基於類的意見了一下,這裏的a nice documentation

0

你爲什麼不使用Django FormView? This is the documentation

from django.views.generic.edit import FormView 

class MyFormView(FormView): 
    form_class = myForm 
    template_name = 'my_template.html' 
    success_url = '/thanks/' 

    def get_context_data(self, **kwargs): 
     #This is you GET 
     return super(MyFormView. self).get_context_data(**kwargs) 

    def form_valid(self, form): 
     #This is after the post, when the form is valid 
     return super(MyFormView, self).form_valid(form) 

    def form_invalid(self, form): 
     #This is after the post, when the form is invalid 
     return super(MyFormView, self).form_invalid(form) 

您可以使用get_succes_url()方法重定向到某處。

我希望有所幫助。