【问题标题】:How post may return proper get from its method?post 如何从其方法中返回正确的 get ?
【发布时间】:2015-05-23 20:36:16
【问题描述】:

我想创建一个具有ClassBasedView 概念证明的简单网站。但是我发现 getpost 方法之间很难交互。所以我有以下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


【解决方案1】:

我创建了一个示例项目here,它按照您的要求执行。与问题相关的代码部分按预期工作。错误一定在其他地方。

我已经测试了链接的项目,它会在通过提交按钮发布数据时返回获取响应。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-03
    • 1970-01-01
    • 1970-01-01
    • 2021-11-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多