我想创建一个简单的网站,其中包含 ClassBasedView 概念验证。但是我发现很难在 get 和 post 方法之间进行交互。所以我有以下view.py:
# View.py
from django.shortcuts import render, redirect
from .models import MyClass
class MyClass(ListView):
model = Users
def get(self, request, *args, **kwargs):
users = Users.objects.count()
context = {'users': users, 'userform': UserForm}
return render(request, 'mysite/index.html', context)
def post(self, request, *args, **kwargs):
if request.POST.get('create_user', False):
new_user = UserForm(data=request.POST)
if new_user.is_valid():
new_user.save()
return super(MyClass, self).get(request, *args, **kwargs)
# return redirect('/mysite/')
else:
return super(MyClass, self).get(request, *args, **kwargs)
# return redirect('/mysite/')
代码不起作用。尽管如此,评论重定向也可以做到。但这并不能让我传递论据。实际上,我无法在 ClassBasedView 概念中找到一个好方法。谷歌搜索几个小时让我更加困惑。
更新,错误代码:
TemplateDoesNotExist at /userbase/
userbase/users_list.html
Request Method: POST
Request URL: http://127.0.0.1:8000/userbase/
Django Version: 1.8.1
Exception Type: TemplateDoesNotExist
Exception Value: userbase/users_list.html
Exception Location: /usr/lib/python2.7/site-packages/django/template/loader.py in select_template, line 76
Python Executable: /usr/bin/python2.7
Python Version: 2.7.9
答案 0 :(得分:0)
我制作了一个示例项目here,它按照您的要求执行。与问题相关的代码部分按预期工作。错误必须在其他地方。
我测试了链接项目,并在通过提交按钮发布数据时返回获取响应。