如何在基于类的视图中编写自己的方法并在 url 中调用方法

Posted

技术标签:

【中文标题】如何在基于类的视图中编写自己的方法并在 url 中调用方法【英文标题】:How to write own methods in class based views and call the methods in urls 【发布时间】:2013-12-30 17:25:14 【问题描述】:

这是我的代码。我只是想实现这个但不能。我正处于学习 Django 的阶段

class BCD(View):
    def start(self):
        return HttpResponse("Huray Finally I called")

urls.py

urlpatterns = patterns('',
     url(r'^login1/$',BCD.as_view(),)

我也试过了

urlpatterns = patterns('',
     url(r'^login1/$',BCD.start.as_view(),)

它会抛出错误。我已经阅读了 django 方法的文档,例如 get 和 post ,可以编写 head 他们将根据提出的请求直接调用。但是我需要在基于类的视图中创建自己的方法

提前致谢

【问题讨论】:

你为什么不能用标准方法getpost等之一来调用你的方法? 如果有 5 种方法可以写入 put 或获取适当的方法。那么即使目前如何为特定 url 调用特定方法也是我的观点 【参考方案1】:

您需要调用get()post() 或任何HTTP 请求中的方法。没有启动 HTTP 请求,所以 Django 不会调用它。

您可以在视图中执行以下操作:

def get(self, request, *args, **kwargs):
    return self.start()

每当您使用 HTTP GET 请求访问视图时,这都会返回 self.start() 的结果。

【讨论】:

感谢您的回复。我仍然不完全清楚。所以我应该从 urls 将方法名称传递给 get(method) 作为参数。如果是这样,请您详细说明。抱歉,不理解这些事情正常吗?? 你的 URL 中应该有 BCD.as_view(),没有别的。 GET & POST 是 HTTP 方法。我们使用GET 来获取基于 url(不包括cookie)的数据,但是使用POST 我们可以 将数据从客户端发送到服务器端。 @AshishNitinPatil 其实还有其他的,比如PUTHEAD,Django 也支持。 对不起,我又来了。抱歉再次打扰。如果假设我在一个基于类的视图中有 5 个方法。对于一个 url 请求,我想调用特定的类方法。那么我应该编写不同的基于类的视图还是可以通过在同一个类中编写来适应逻辑

以上是关于如何在基于类的视图中编写自己的方法并在 url 中调用方法的主要内容,如果未能解决你的问题,请参考以下文章

django.urls.exceptions.NoReverseMatch 基于类的列表视图

如何在基于类的视图中传递 URL 中的变量

如何响应 Django 基于类的视图中不允许的方法

django url如何使用问号? (基于类的视图)

基于类的视图中的可选 url 参数

如何在rest框架中为我的注册视图编写登录视图?