按下“搜索”按钮后,我在urls.py中重定向到ClassView的as_view()方法 有一个如下:
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,而不是使runserver 0:port
当我在家用电脑上执行此操作时,一切正常,但如果我从另一台计算机连接到http:// sererIP:端口,请按“搜索”按钮执行方法as_view()它来到这个“其他” “在代码中然后表单初始化但返回渲染不会给我任何东西,只有白页。当我检查服务器输出时,我得到了
[07/May/2013 05:54:33] "POST / HTTP/1.1" 405 0
红色。
从笔记本电脑连接到服务器并使runserver 0:port后,我甚至在这台笔记本电脑上遇到了同样的问题。我尝试过从家用电脑连接进行测试,并且还有白页。
答案 0 :(得分:1)
as_view()
不应该返回http响应,而是一个可调用的函数...
如果您要发送GET
请求的回复,请在查看类中添加get
方法:
class MyView(View):
def get(request):
# return your http response here
如果你想稍微浏览Django基于类的视图,这里是a nice documentation!
答案 1 :(得分: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()
方法在某处重定向。
我希望有所帮助。