0

我使用的是外部数据库而不是 ORM。我正在编写一个测试应用程序,当提交测试时,我希望用户被重定向到一个 URL,该 URL 将他们的测试 ID 附加到 url 并且页面应该显示他们的测试结果。例如,“http://domain/testplatform/123”,其中 123 是来自外部数据库的测试 ID。db 还保存该测试 ID 的所有测试结果,我在模板中获取并使用这些值。但我无法让应用程序将测试 ID 附加到 URL。这是我的代码。

网址.py

from testplatform import views
...
(r'^testplatform/(\d+)/$', views.testcriteria, 'testsubmit'),
(r'^testplatform/$', views.testcriteria),
...

这一点,r'^testplatform/(\d+)$'。是我想将 testsubmit 中的值附加到 URL 的地方。r'^testplatform/$' 将用户带到我创建的表单,他们填写该表单以启动测试。

视图.py

from django.core.context_processors import csrf
from django.shortcuts import render_to_response
from testplatform.test_db import tests
...
def testcriteria(request):

  if request.method == 'POST':
    form = TestCriteriaForm(request.POST)
    if form.is_valid():
      ...
      cd = form.cleaned_data
      t_testname = cd['testname']
      ...
      sql = tests()
      testsubmitid = sql.tbl_test_name(t_testname)
      ...

      testsubmit = dict(testsubmitid=testsubmitid, testcriteria=testcriteria)
      testsubmit.update(csrf(request))
      return render_to_response('testsubmitted.html',testsubmit)

我已经确认我从 testsubmitid 获得了一个值——这将返回测试 ID。testcriteria 值来自外部数据库的另一个查询,该数据库包含有关已测试内容的信息。

但是,当我提交表单时,页面只是指向 testsubmitted.html,但 url 只是“http://domain/testplatform”

我应该为结果页面创建一个新视图并使用类似的东西将用户重定向到结果页面吗?

 return HttpResponseRedirect(reverse("testresults.views.results", args=testsubmit))

谁能帮我告诉我为什么这不起作用?

谢谢 - 奥利

4

1 回答 1

0

我不知道您为什么会收到该特定错误,因为您没有提供回溯。您还没有显示任何可以重定向到的代码/testplatform/123,所以我对此无能为力。但肯定有一个错误:该视图没有为 ID 提供参数。您可能需要执行以下操作:

def testcriteria(request, submit_id=None):
于 2012-09-13T18:15:53.987 回答