【问题标题】:Calling Django function from html从 html 调用 Django 函数
【发布时间】:2014-08-28 06:43:00
【问题描述】:

我无法通过 html 按钮在视图中运行函数,但代码似乎是正确的,所以如果有人知道我缺少什么,我将不胜感激。最终目标是启动 celery 任务,如果有更好的方法,请告诉我。

模板.html:

<form action="{% url 'save' pk=project.id %}" method="POST">
        {% csrf_token %}
            <button id="saveChanges" type="submit" class="btn btn-primary btn-sm">Save</button>
        </form>

urls.py:

urlpatterns = patterns('',
    ....
    url(r'^manage/save(?P<pk>\d+)/$', 'myapp.views.Save', name="save"),
    ....)

views.py

def Save(request, pk):
   if request.method == 'POST':
       project = Project.objects.get(id = pk)
       ....
       task.delay(project.id)
   return HttpResponse('OK', status=200)

【问题讨论】:

  • @Daniel 目前什么都没有。当 celery 终端添加任务时,我会知道它何时工作
  • 日志是否显示manage/save 是用POST 调用的?是 200 级(正常)还是 500 级(错误)状态?
  • HttpResonse 应该是HttpResponse
  • @shavenwarthog 我不知道如何查看日志
  • @karthikr 对不起,当我在问题中写它时,这只是一个错字

标签: python django python-2.7 django-forms django-views


【解决方案1】:

@DoctorWizard 使用manage.py runserver 运行您的服务器——日志将在同一个终端上。

【讨论】:

    【解决方案2】:

    您的 url 模式正在使用命名组,这会将关键字参数传递给视图。您的视图只接受位置参数。

    要么将 URL 模式更改为 r'^manage/save(\d+)/$'(您想要在 save 后面加上斜杠吗?)

    将视图参数更改为def Save(request, pk=None):def Save(request, **kwargs): 并从kwargs 中提取pk

    https://docs.djangoproject.com/en/1.6/topics/http/urls/#named-groups

    【讨论】:

      猜你喜欢
      • 2014-08-18
      • 1970-01-01
      • 1970-01-01
      • 2011-06-15
      • 2019-04-08
      • 2012-01-07
      • 2013-07-17
      • 1970-01-01
      • 2020-08-29
      相关资源
      最近更新 更多