【问题标题】:How can I stop post method to run by default in Django class based view如何在基于 Django 类的视图中停止 post 方法默认运行
【发布时间】:2020-12-12 13:56:08
【问题描述】:

我注意到GET 方法和POST 方法都在运行。当我没有对该 URL 执行任何 POST 请求时,我只想运行 GET 方法。

Class Profile(View):
    template_name = 'profile.html'
    def get(self, request):
        # some code...
        return render(request, self.template_name, context_dict)

    def post(self, request):
        # some code...
        return render(request, self.template_name, context_dict)

如果我没有执行任何POST 请求,我不想运行POST 方法。 我是 Django 的新手。很抱歉,如果这是一个愚蠢的问题。

【问题讨论】:

  • 你如何使用Profile视图?
  • 它显示的是个人资料信息,也是侧面的个人资料编辑表格。我在这两种方法中都做了一个print,并且都被打印出来了。所以我猜这两种方法都被调用了。
  • 如何将它绑定到urlpatterns?你如何向视图提出请求?
  • urlpatterns = [path('/profile', Profile.as_view(), name='profile')],

标签: django django-views django-class-based-views


【解决方案1】:

处理这种情况的一种方法是查找 HttpRequest.method,然后运行相关代码:

if request.method == 'GET':
    do_something()
elif request.method == 'POST':
    do_something_else()

您可以在此处找到有关此内容的更多信息: https://docs.djangoproject.com/en/3.1/ref/request-response/

【讨论】:

  • 他已经在使用带有 get() 和 post() 的 View 类,我认为您的答案与问题无关?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-08-19
  • 2016-05-20
  • 1970-01-01
  • 1970-01-01
  • 2016-02-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多