【发布时间】:2015-05-23 20:36:16
【问题描述】:
我想创建一个具有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/')
代码不起作用。尽管如此,评论 redirects 可以解决问题。但这不允许我传递论点。实际上我在 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
【问题讨论】:
-
我认为列表视图是用于列出对象,而不是保存它们...试试 FormView 什么的。此外,除了 get 和 post 之外,还有几种方法可以覆盖。您可以在此处找到更多信息:ccbv.co.uk 请记住,基于特定类的视图对某些东西有好处,试图迫使它们做出一些不同的东西,而它们的设计目的可能会令人头疼......改用更一般的视图并在需要时为该行为编写代码(视图、模板视图)。
-
检查 get_context_data
-
谢谢,您的意思是基于类的视图不适用于 get/post 方法或您要说的内容?
-
如果我有 5 块巧克力棒,我的车能跑多快? “代码不起作用”完全没有告诉我们您的实际问题。如果您需要帮助,请说明实际问题是什么。 (回答:我没有车。)
-
我想在 post 方法中使用 get 方法。或者您希望我添加损坏代码的错误输出?好吧,我认为它不会有足够的帮助,但如果你建议我可以把它放在上面。
标签: python django django-views django-class-based-views